Sophie Alpert 1490ab12ef Update license headers for MIT license
Summary:
Includes React Native and its dependencies Fresco, Metro, and Yoga. Excludes samples/examples/docs.

find: ^(?:( *)|( *(?:[\*~#]|::))( )? *)?Copyright (?:\(c\) )?(\d{4})\b.+Facebook[\s\S]+?BSD[\s\S]+?(?:this source tree|the same directory)\.$
replace: $1$2$3Copyright (c) $4-present, Facebook, Inc.\n$2\n$1$2$3This source code is licensed under the MIT license found in the\n$1$2$3LICENSE file in the root directory of this source tree.

Reviewed By: TheSavior, yungsters

Differential Revision: D7007050

fbshipit-source-id: 37dd6bf0ffec0923bfc99c260bb330683f35553e
2018-02-16 18:31:53 -08:00

82 lines
2.0 KiB
JavaScript

/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @emails oncall+react_native
*/
'use strict';
jest
.mock('ErrorUtils')
.mock('BatchedBridge');
function expectToBeCalledOnce(fn) {
expect(fn.mock.calls.length).toBe(1);
}
describe('Batchinator', () => {
const Batchinator = require('Batchinator');
it('executes vanilla tasks', () => {
const callback = jest.fn();
const batcher = new Batchinator(callback, 10000);
batcher.schedule();
jest.runAllTimers();
expectToBeCalledOnce(callback);
});
it('batches up tasks', () => {
const callback = jest.fn();
const batcher = new Batchinator(callback, 10000);
batcher.schedule();
batcher.schedule();
batcher.schedule();
batcher.schedule();
expect(callback).not.toBeCalled();
jest.runAllTimers();
expectToBeCalledOnce(callback);
});
it('flushes on dispose', () => {
const callback = jest.fn();
const batcher = new Batchinator(callback, 10000);
batcher.schedule();
batcher.schedule();
batcher.dispose();
expectToBeCalledOnce(callback);
jest.runAllTimers();
expectToBeCalledOnce(callback);
});
it('should call tasks scheduled by the callback', () => {
let batcher = null;
let hasRescheduled = false;
const callback = jest.fn(() => {
if (!hasRescheduled) {
batcher.schedule();
hasRescheduled = true;
}
});
batcher = new Batchinator(callback, 10000);
batcher.schedule();
jest.runAllTimers();
expect(callback.mock.calls.length).toBe(2);
});
it('does not run callbacks more than once', () => {
const callback = jest.fn();
const batcher = new Batchinator(callback, 10000);
batcher.schedule();
batcher.schedule();
jest.runAllTimers();
expectToBeCalledOnce(callback);
jest.runAllTimers();
expectToBeCalledOnce(callback);
batcher.dispose();
expectToBeCalledOnce(callback);
});
});