def test_validate_filter_success(): """All of the columns in the condition are available and not blacklisted""" condition = ((ComplexModel.date >= "now") & (ComplexModel.email.contains("@")) & ((ComplexModel.joined.is_(None)) | (ComplexModel.name.in_(["foo", "bar"])))) validate_filter_condition(condition, ComplexModel.Meta.columns, set())
def test_validate_filter_not_available(): """The condition uses a column that's not available""" with pytest.raises(InvalidSearch): validate_filter_condition(ComplexModel.date == "now", set(), set())
def test_validate_filter_blacklisted(): """The condition uses a column that's on the blacklist""" with pytest.raises(InvalidSearch): validate_filter_condition(ComplexModel.date == "now", ComplexModel.Meta.columns, {ComplexModel.date})
def test_validate_no_filter(): """Filter can be None""" validate_filter_condition(None, ComplexModel.Meta.columns, set())