From ea7c5ab04b0e67083e2dda45f64decea1dc378eb Mon Sep 17 00:00:00 2001 From: Alex Kotliarskyi Date: Tue, 11 Apr 2017 11:48:49 -0700 Subject: [PATCH] Add mock for BackHandler Reviewed By: fkgozali Differential Revision: D4861901 fbshipit-source-id: b1b74e63731328d2235bf86794aa481a8275ed8c --- Libraries/Utilities/__mocks__/BackHandler.js | 52 ++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Libraries/Utilities/__mocks__/BackHandler.js diff --git a/Libraries/Utilities/__mocks__/BackHandler.js b/Libraries/Utilities/__mocks__/BackHandler.js new file mode 100644 index 000000000..e8b5435e2 --- /dev/null +++ b/Libraries/Utilities/__mocks__/BackHandler.js @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +const _backPressSubscriptions = new Set(); + +const BackHandler = { + exitApp: jest.fn(), + + addEventListener: function ( + eventName: BackPressEventName, + handler: Function + ): {remove: () => void} { + _backPressSubscriptions.add(handler); + return { + remove: () => BackHandler.removeEventListener(eventName, handler), + }; + }, + + removeEventListener: function( + eventName: BackPressEventName, + handler: Function + ): void { + _backPressSubscriptions.delete(handler); + }, + + + mockPressBack: function() { + let invokeDefault = true; + const subscriptions = [..._backPressSubscriptions].reverse(); + for (let i = 0; i < subscriptions.length; ++i) { + if (subscriptions[i]()) { + invokeDefault = false; + break; + } + } + + if (invokeDefault) { + BackHandler.exitApp(); + } + }, +}; + +module.exports = BackHandler;