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;