Example #1
0
def test_apply_condition_match():
    assert (apply_condition(
        MatchCondition(column='origin', operator='matches', value='^f.*'),
        query='SELECT product FROM inventory WHERE ',
    ) == "SELECT product FROM inventory WHERE origin RLIKE '^f.*'")
    assert (apply_condition(
        MatchCondition(column='origin', operator='notmatches', value='^f.*'),
        query='SELECT product FROM inventory WHERE ',
    ) == "SELECT product FROM inventory WHERE origin NOT RLIKE '^f.*'")
Example #2
0
def test_apply_condition_nullity():
    assert (apply_condition(
        NullCondition(column='origin', operator='isnull'),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE origin IS NULL')
    assert (apply_condition(
        NullCondition(column='origin', operator='notnull'),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE origin IS NOT NULL')
Example #3
0
def test_apply_condition_comparisons():
    assert (apply_condition(
        ComparisonCondition(column='amount', operator='eq', value=10),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE amount = 10')

    assert (apply_condition(
        ComparisonCondition(column='amount', operator='ne', value=10),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE amount != 10')

    assert (apply_condition(
        ComparisonCondition(column='amount', operator='lt', value=10),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE amount < 10')

    assert (apply_condition(
        ComparisonCondition(column='amount', operator='le', value=10),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE amount <= 10')

    assert (apply_condition(
        ComparisonCondition(column='amount', operator='gt', value=10),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE amount > 10')

    assert (apply_condition(
        ComparisonCondition(column='amount', operator='ge', value=10),
        query='SELECT product FROM inventory WHERE ',
    ) == 'SELECT product FROM inventory WHERE amount >= 10')

    assert (apply_condition(
        ComparisonCondition(column='amount', operator='ge', value='blabla'),
        query='SELECT product FROM inventory WHERE ',
    ) == "SELECT product FROM inventory WHERE amount >= 'blabla'")
Example #4
0
def test_apply_condition_inclusion():
    assert (
        apply_condition(
            InclusionCondition(column='origin',
                               operator='in',
                               value=['france', 'spain', 'italy']),
            query='SELECT product FROM inventory WHERE ',
        ) ==
        "SELECT product FROM inventory WHERE origin IN ('france', 'spain', 'italy')"
    )
    assert (
        apply_condition(
            InclusionCondition(column='origin',
                               operator='nin',
                               value=['france', 'spain', 'italy']),
            query='SELECT product FROM inventory WHERE ',
        ) ==
        "SELECT product FROM inventory WHERE origin NOT IN ('france', 'spain', 'italy')"
    )
Example #5
0
def test_apply_condition_conditioncomboand():
    assert (
        apply_condition(
            ConditionComboAnd(and_=[
                ComparisonCondition(column='amount', operator='gt', value=10),
                MatchCondition(
                    column='origin', operator='matches', value='^france'),
                InclusionCondition(column='type',
                                   operator='nin',
                                   value=['meat', 'vegetables', 'corn']),
            ]),
            query='SELECT product FROM inventory WHERE ',
        ) ==
        "SELECT product FROM inventory WHERE amount > 10 AND origin RLIKE '^france' AND type NOT IN ('meat', "
        "'vegetables', 'corn')")
Example #6
0
def test_apply_not_implemented():
    class FakeCondition(BaseCondition):
        ...

    with pytest.raises(NotImplementedError):
        apply_condition(FakeCondition(), query='coucou')