Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Column.header validator #20

Open
yakovistomin opened this issue May 12, 2020 · 1 comment
Open

Add Column.header validator #20

yakovistomin opened this issue May 12, 2020 · 1 comment

Comments

@yakovistomin
Copy link
Collaborator

Сейчас заголовок колонки проверяется на полное соответствие значению Column.header.
Необходимо добавить возможность указания функции для валидации заголовка.

Пример1:

def test_validate_headers(column):
    class Parser(BaseXLSXParser):
        columns = [
            Column('column_name', header='№'),
        ]

    xlsx_file = xlsx_file_factory(header=['№'], data=[])
    parser = Parser(file_path=xlsx_file.file)

    parser()

    assert parser.has_errors is False



def test_validate_headers_with_validator(column):
    class Parser(BaseXLSXParser):
        columns = [
            Column('column_name', header='№', header_validator=lambda x: x in ['№', 'Номер', '№пп']),
        ]

    xlsx_file = xlsx_file_factory(header=['№пп'], data=[])
    parser = Parser(file_path=xlsx_file.file)

    parser()

    assert parser.has_errors is False



def test_validate_headers_error(header):
    class Parser(BaseXLSXParser):
        columns = [
            Column('column_name', header='№'),
        ]

    xlsx_file = xlsx_file_factory(header=['fail header'], data=[])
    parser = Parser(file_path=xlsx_file.file)

    parser()

    assert parser.has_errors is True
    assert parser.errors == (
        "Incorrect column names in the file. "
        "Columns in file: ['fail header']. "
        "Expected columns: ['№']."
    )



def test_validate_headers_with_validator_error(header):
    class Parser(BaseXLSXParser):
        columns = [
            Column('column_name', header='№', header_validator=lambda x: x in ['№', 'Номер', '№пп']),
        ]

    xlsx_file = xlsx_file_factory(header=['fail header'], data=[])
    parser = Parser(file_path=xlsx_file.file)

    parser()

    assert parser.has_errors is True
    assert parser.errors == (
        "Incorrect column names in the file. "
        "Columns in file: ['fail header']. "
        "Expected columns: ['№']."
    )
@yakovistomin
Copy link
Collaborator Author

Или можно дать возможность в качестве header использовать r строку

Column(“name”, header=“№”)

Column(“name”, header=r”№|№пп|порядковый номер”)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant