Example #1
0
    def test_method_all_with_rejected_promise(self):
        class MyException(Exception):
            pass

        promises = [Promise.resolve(1) for _ in range(0, 5)]
        promises += [Promise.reject(MyException())]
        promises += [Promise.resolve(1) for _ in range(0, 5)]

        p = Promise.all(promises)
        with pytest.raises(MyException):
            p.result()
Example #2
0
 def json_request(verb, url, data={}, **kwargs):
     assert data.get('token', None) == 'TOKEN'
     return Promise.resolve({
         'code': 204,
         'headers': {},
         'content': None
     })
Example #3
0
 def task():
     assert threading.current_thread().ident is not main_thread
     yield p1
     assert threading.current_thread().ident is not main_thread
     yield p2
     assert threading.current_thread().ident is not main_thread
     yield Promise.resolve(None)
     assert threading.current_thread().ident is not main_thread
Example #4
0
 def _auth_response(self):
     """Generic OK response for OAuth request."""
     return Promise.resolve({
         'code': 200,
         'headers': {},
         'content': {
             'access_token': 'ACCESS',
             'refresh_token': 'REFRESH'
         },
     })
Example #5
0
    def on(self, path, response):
        """Set response for the next request to "path"

        Order are executed in the same order as declared (fifo).
        """
        if isinstance(response, Exception):
            p = Promise.reject(response)
        else:
            p = Promise.resolve(response)
        self._expected_requests[path].append(p)
Example #6
0
    def test_method_all_with_async_promises(self):
        promises = [Promise.resolve(1) for _ in range(0, 5)]

        _resolve_callback = []

        def _init(ok, _error):
            _resolve_callback.append(ok)

        promises.append(Promise(_init))

        p = Promise.all(promises)

        # The ALL promise is not yet resolved.
        with pytest.raises(TimeoutError):
            p.result(0)

        _resolve_callback[0]('OK')

        # Now, all sub-promises are resolved.
        assert len(p.result(0.001)) is 6
Example #7
0
 def task():
     yield Promise.resolve(1)
     yield Promise.resolve(2)
     yield Promise.resolve(3)
     yield 1
Example #8
0
 def execute_request(req):
     assert req.priority < 10
     return Promise.resolve(None)
Example #9
0
 def test_method_all_with_one_promise(self):
     p1 = Promise.resolve('RESULT')
     p = Promise.all([p1])
     assert p.result(0.001) == ['RESULT']
Example #10
0
    def test_method_all_with_several_promises(self):
        promises = [Promise.resolve(1) for _ in range(0, 20)]

        p = Promise.all(promises)

        assert sum(p.result()) is 20
Example #11
0
 def test_resolve_value(self):
     """Wrap a value into a Promise using Promise.resolve()."""
     p = Promise.resolve('xyz')
     assert p.result(0.01) is 'xyz'
Example #12
0
    def test_resolve_future(self):
        """Use Promise.resolve() on an object who is already a Promise."""

        p = Promise.resolve(Promise.resolve(33))
        assert p.result(0.01) == 33
Example #13
0
 def execute_request(request):
     context['count'] += 1
     if context['count'] < 3:
         return Promise.reject(NetworkError())
     else:
         return Promise.resolve(None)
Example #14
0
 def task():
     yield Promise.resolve('OK')
     yield Promise.reject(Err())
Example #15
0
 def task():
     yield Promise.resolve(True)
     raise Err()
Example #16
0
 def test_method_race_with_one_promise(self):
     p1 = Promise.resolve('RESULT')
     p = Promise.race([p1])
     assert p.result(0.001) == 'RESULT'
Example #17
0
 def execute_request(request):
     if context['pass']:
         return Promise.resolve(None)
     else:
         return Promise.reject(NetworkError())
Example #18
0
 def execute_request(request):
     if request.host == host:
         return Promise.resolve(None)
     else:
         return Promise.reject(NetworkError())
Example #19
0
 def good(_request):
     """Request always OK."""
     return Promise.resolve({'code': 200, 'content': ':)', 'headers': {}})
Example #20
0
 def f(x):
     return Promise.resolve(x + 10)
Example #21
0
 def task():
     yield Promise.resolve('OK')
     with pytest.raises(Err):
         yield Promise.reject(Err())
     yield 'OK'