Пример #1
0
def test_provider_handle_bad_providers():

    provider_test = Provider()

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        return dict(result1=1)

    @provider(provider_test)
    def provider_for_test_2(sender, *args, **kwargs):
        return 3

    @provider(provider_test)
    def provider_for_test_3(sender, *args, **kwargs):
        return []

    @provider(provider_test)
    def provider_for_test_4(sender, *args, **kwargs):
        return dict(result4=4)

    results = provider_test.gather()
    assert isinstance(results, GatheredDict)
    assert results["result1"] == 1
    assert "result2" not in results
    assert "result3" not in results
    assert results["result4"] == 4
Пример #2
0
def test_no_providers():

    provider_test = Provider(providing_args=["foo"])

    results = provider_test.gather()
    assert isinstance(results, GatheredDict)
    assert results.keys() == []
Пример #3
0
def test_provider_handle_multi_decorators():

    provider_test = Provider(providing_args=["foo"])
    provider_test_2 = Provider(providing_args=["foo"])

    @provider([provider_test, provider_test_2], sender=str)
    def provider_for_test(sender, *args, **kwargs):
        return dict(result="BOOM: %s" % kwargs["foo"])

    results = provider_test.gather(str, foo="1")
    assert isinstance(results, GatheredDict)
    assert results["result"] == "BOOM: 1"

    results = provider_test_2.gather(str, foo="2")
    assert isinstance(results, GatheredDict)
    assert results["result"] == "BOOM: 2"
Пример #4
0
def test_provider_with_sender_multi():

    provider_test = Provider(providing_args=["foo"])

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        if sender is str:
            return dict(result=int(kwargs["foo"]) * 7)
        return dict(result=kwargs["foo"] * 7)

    results = provider_test.gather(str, foo="3")
    assert isinstance(results, GatheredDict)
    assert results["result"] == 21

    results = provider_test.gather(int, foo=3)
    assert isinstance(results, GatheredDict)
    assert results["result"] == 21
Пример #5
0
def test_provider_caching_no_receiver():
    class Sender(object):
        pass

    provider_test = Provider(use_caching=True)

    assert provider_test.gather(Sender).keys() == []
    assert provider_test.gather(Sender).keys() == []

    class NotSender(object):
        pass

    @provider(provider_test, sender=Sender)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather(NotSender).keys() == []
    assert provider_test.gather(NotSender).keys() == []
Пример #6
0
def test_provider_caching():

    provider_test = Provider(use_caching=True)

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather()["foo"] == "bar"
    assert provider_test.gather()["foo"] == "bar"
Пример #7
0
def test_provider_caching_no_receiver():

    class Sender(object):
        pass

    provider_test = Provider(use_caching=True)

    assert provider_test.gather(Sender).keys() == []
    assert provider_test.gather(Sender).keys() == []

    class NotSender(object):
        pass

    @provider(provider_test, sender=Sender)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather(NotSender).keys() == []
    assert provider_test.gather(NotSender).keys() == []
Пример #8
0
def test_provider_caching():

    provider_test = Provider(use_caching=True)

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather()["foo"] == "bar"
    assert provider_test.gather()["foo"] == "bar"
Пример #9
0
def test_provider_with_sender():

    provider_test = Provider(providing_args=["foo"])

    @provider(provider_test, sender=str)
    def provider_for_test(sender, *args, **kwargs):
        return dict(result=kwargs["foo"])

    results = provider_test.gather(str, foo="BOOM")
    assert isinstance(results, GatheredDict)
    assert results["result"] == "BOOM"
Пример #10
0
def test_provider():

    provider_test = Provider(providing_args=["foo"])

    @provider(provider_test)
    def provider_for_test(*args, **kwargs):
        return dict(result=2)

    results = provider_test.gather()
    assert isinstance(results, GatheredDict)
    assert results["result"] == 2
Пример #11
0
def test_provider_with_sender_int():

    provider_test = Provider(providing_args=["foo"])

    @provider(provider_test)
    def provider_for_test(*args, **kwargs):
        return dict(result=kwargs["foo"] * 7)

    results = provider_test.gather(int, foo=3)
    assert isinstance(results, GatheredDict)
    assert results["result"] == 21
Пример #12
0
def test_provider_caching_sender():
    class Sender(object):
        pass

    provider_test = Provider(use_caching=True)

    @provider(provider_test, sender=Sender)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather(Sender)["foo"] == "bar"
    assert provider_test.gather(Sender)["foo"] == "bar"
Пример #13
0
def test_provider_caching_sender():

    class Sender(object):
        pass

    provider_test = Provider(use_caching=True)

    @provider(provider_test, sender=Sender)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather(Sender)["foo"] == "bar"
    assert provider_test.gather(Sender)["foo"] == "bar"
Пример #14
0
def test_provider_subclass():
    class ParentClass(object):
        pass

    class ChildClass(ParentClass):
        pass

    provider_test = Provider()

    @provider(provider_test, sender=ParentClass)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather(ChildClass)["foo"] == "bar"
Пример #15
0
def test_provider_subclass():

    class ParentClass(object):
        pass

    class ChildClass(ParentClass):
        pass

    provider_test = Provider()

    @provider(provider_test, sender=ParentClass)
    def provider_for_test(sender, *args, **kwargs):
        return dict(foo="bar")

    assert provider_test.gather(ChildClass)["foo"] == "bar"
Пример #16
0
def test_provider_list_results():

    provider_test = Provider(result_class=GatheredList)

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        return [1, 2, 3]

    @provider(provider_test)
    def provider_for_test_2(sender, *args, **kwargs):
        return [2, 3, 4]

    results = provider_test.gather()
    assert isinstance(results, GatheredList)
    assert [r for r in results] == [1, 2, 3, 2, 3, 4]
Пример #17
0
def test_provider_handle_multi_providers():

    provider_test = Provider()

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        return dict(result1=1)

    @provider(provider_test)
    def provider_for_test_2(sender, *args, **kwargs):
        return dict(result2=2)

    results = provider_test.gather()
    assert isinstance(results, GatheredDict)
    assert results["result1"] == 1
    assert results["result2"] == 2
Пример #18
0
def test_provider_handle_null_provider():

    provider_test = Provider()

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        return dict(result1=1)

    @provider(provider_test)
    def provider_for_test_2(sender, *args, **kwargs):
        return None

    @provider(provider_test)
    def provider_for_test_3(sender, *args, **kwargs):
        return dict(result3=3)

    results = provider_test.gather()
    assert isinstance(results, GatheredDict)
    assert results["result1"] == 1
    assert "result2" not in results
    assert results["result3"] == 3
Пример #19
0
def test_provider_handle_stop_providing():

    provider_test = Provider()

    @provider(provider_test)
    def provider_for_test(sender, *args, **kwargs):
        return dict(result1=1)

    @provider(provider_test)
    def provider_for_test_2(sender, *args, **kwargs):
        raise StopProviding(result=dict(result2=2))

    @provider(provider_test)
    def provider_for_test_3(sender, *args, **kwargs):
        return dict(result3=3)

    results = provider_test.gather()
    assert isinstance(results, GatheredDict)
    assert results["result1"] == 1
    assert results["result2"] == 2
    assert "result3" not in results