added app.register_listener method w/test
This commit is contained in:
		
							
								
								
									
										15
									
								
								sanic/app.py
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								sanic/app.py
									
									
									
									
									
								
							| @@ -117,6 +117,21 @@ class Sanic: | ||||
|  | ||||
|         return decorator | ||||
|  | ||||
|     def register_listener(self, listener, event): | ||||
|         """ | ||||
|         Register the listener for a given event. | ||||
|  | ||||
|         Args: | ||||
|             listener: callable i.e. setup_db(app, loop) | ||||
|  | ||||
|             event: when to register listener i.e. 'before_server_start' | ||||
|  | ||||
|         Returns: listener | ||||
|  | ||||
|         """ | ||||
|  | ||||
|         return self.listener(event)(listener) | ||||
|  | ||||
|     # Decorator | ||||
|     def route(self, uri, methods=frozenset({'GET'}), host=None, | ||||
|               strict_slashes=None, stream=False, version=None, name=None): | ||||
|   | ||||
| @@ -49,6 +49,23 @@ def test_single_listener(listener_name): | ||||
|     assert random_name_app.name + listener_name == output.pop() | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('listener_name', AVAILABLE_LISTENERS) | ||||
| def test_register_listener(listener_name): | ||||
|     """ | ||||
|     Test that listeners on their own work with | ||||
|     app.register_listener method | ||||
|     """ | ||||
|     random_name_app = Sanic(''.join( | ||||
|         [choice(ascii_letters) for _ in range(choice(range(5, 10)))])) | ||||
|     output = list() | ||||
|     # Register listener | ||||
|     listener = create_listener(listener_name, output) | ||||
|     random_name_app.register_listener(listener, | ||||
|                                       event=listener_name) | ||||
|     start_stop_app(random_name_app) | ||||
|     assert random_name_app.name + listener_name == output.pop() | ||||
|  | ||||
|  | ||||
| def test_all_listeners(): | ||||
|     random_name_app = Sanic(''.join( | ||||
|         [choice(ascii_letters) for _ in range(choice(range(5, 10)))])) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Stephan Fitzpatrick
					Stephan Fitzpatrick