Skip to content

Commit

Permalink
Refactor SchedulerHostConfigs (#20025)
Browse files Browse the repository at this point in the history
* Remove SchedulerHostConfigs

* Fix builds

* Fix forks

* Move SchedulerNoDom check to npm/index.js

* Fix tests

* Add @GATE source

* Gate build-only test to build test runs
  • Loading branch information
rickhanlonii committed Nov 2, 2020
1 parent 56e9fee commit 454c221
Show file tree
Hide file tree
Showing 28 changed files with 1,365 additions and 548 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ function unmount(dom) {

beforeEach(() => {
jest.resetModules();
jest.unmock('scheduler');
jest.mock('scheduler', () =>
require.requireActual('scheduler/unstable_no_dom'),
);
yields = [];
React = require('react');
ReactDOM = require('react-dom');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ function App() {

beforeEach(() => {
jest.resetModules();
jest.unmock('scheduler');
jest.mock('scheduler', () => require('scheduler/unstable_no_dom'));
React = require('react');
ReactDOM = require('react-dom');
ReactFeatureFlags = require('shared/ReactFeatureFlags');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ function App() {

beforeEach(() => {
jest.resetModules();
jest.unmock('scheduler');
jest.mock('scheduler', () =>
require.requireActual('scheduler/unstable_no_dom'),
);
React = require('react');
ReactDOM = require('react-dom');
});
Expand Down
2 changes: 1 addition & 1 deletion packages/scheduler/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@

'use strict';

export * from './src/Scheduler';
export * from './src/forks/SchedulerDOM';
4 changes: 3 additions & 1 deletion packages/scheduler/npm/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
'use strict';

if (process.env.NODE_ENV === 'production') {
if (typeof window === 'undefined' || typeof MessageChannel !== 'function') {
module.exports = require('./unstable_no_dom');
} else if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/scheduler.production.min.js');
} else {
module.exports = require('./cjs/scheduler.development.js');
Expand Down
7 changes: 7 additions & 0 deletions packages/scheduler/npm/unstable_no_dom.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
'use strict';

if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/scheduler-unstable_no_dom.production.min.js');
} else {
module.exports = require('./cjs/scheduler-unstable_no_dom.development.js');
}
1 change: 1 addition & 0 deletions packages/scheduler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
"tracing.js",
"tracing-profiling.js",
"unstable_mock.js",
"unstable_no_dom.js",
"unstable_post_task.js",
"cjs/",
"umd/"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@ describe('SchedulerBrowser', () => {

// Un-mock scheduler
jest.mock('scheduler', () => require.requireActual('scheduler'));
jest.mock('scheduler/src/SchedulerHostConfig', () =>
require.requireActual(
'scheduler/src/forks/SchedulerHostConfig.default.js',
),
);

runtime = installMockBrowserRuntime();
performance = global.performance;
Expand Down
7 changes: 2 additions & 5 deletions packages/scheduler/src/__tests__/SchedulerNoDOM-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,8 @@ describe('SchedulerNoDOM', () => {
jest.useFakeTimers();

// Un-mock scheduler
jest.mock('scheduler', () => require.requireActual('scheduler'));
jest.mock('scheduler/src/SchedulerHostConfig', () =>
require.requireActual(
'scheduler/src/forks/SchedulerHostConfig.default.js',
),
jest.mock('scheduler', () =>
require.requireActual('scheduler/unstable_no_dom'),
);

Scheduler = require('scheduler');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
*/
'use strict';

class MockMessageChannel {
constructor() {
this.port1 = jest.fn();
this.port2 = jest.fn();
}
}

describe('Scheduling UMD bundle', () => {
beforeEach(() => {
// Fool SECRET_INTERNALS object into including UMD forwarding methods.
Expand All @@ -16,11 +23,18 @@ describe('Scheduling UMD bundle', () => {
jest.resetModules();

jest.mock('scheduler', () => require.requireActual('scheduler'));
jest.mock('scheduler/src/SchedulerHostConfig', () =>
require.requireActual(
'scheduler/src/forks/SchedulerHostConfig.default.js',
),
);

// Mock a browser environment since we're testing UMD modules.
global.window = {
requestAnimationFrame: jest.fn(),
cancelAnimationFrame: jest.fn(),
};
global.MessageChannel = MockMessageChannel;
});

afterEach(() => {
global.window = undefined;
global.MessageChannel = undefined;
});

function filterPrivateKeys(name) {
Expand Down
Loading

0 comments on commit 454c221

Please sign in to comment.