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()
def json_request(verb, url, data={}, **kwargs): assert data.get('token', None) == 'TOKEN' return Promise.resolve({ 'code': 204, 'headers': {}, 'content': None })
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
def _auth_response(self): """Generic OK response for OAuth request.""" return Promise.resolve({ 'code': 200, 'headers': {}, 'content': { 'access_token': 'ACCESS', 'refresh_token': 'REFRESH' }, })
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)
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
def task(): yield Promise.resolve(1) yield Promise.resolve(2) yield Promise.resolve(3) yield 1
def execute_request(req): assert req.priority < 10 return Promise.resolve(None)
def test_method_all_with_one_promise(self): p1 = Promise.resolve('RESULT') p = Promise.all([p1]) assert p.result(0.001) == ['RESULT']
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
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'
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
def execute_request(request): context['count'] += 1 if context['count'] < 3: return Promise.reject(NetworkError()) else: return Promise.resolve(None)
def task(): yield Promise.resolve('OK') yield Promise.reject(Err())
def task(): yield Promise.resolve(True) raise Err()
def test_method_race_with_one_promise(self): p1 = Promise.resolve('RESULT') p = Promise.race([p1]) assert p.result(0.001) == 'RESULT'
def execute_request(request): if context['pass']: return Promise.resolve(None) else: return Promise.reject(NetworkError())
def execute_request(request): if request.host == host: return Promise.resolve(None) else: return Promise.reject(NetworkError())
def good(_request): """Request always OK.""" return Promise.resolve({'code': 200, 'content': ':)', 'headers': {}})
def f(x): return Promise.resolve(x + 10)
def task(): yield Promise.resolve('OK') with pytest.raises(Err): yield Promise.reject(Err()) yield 'OK'