From ae96f211039d9d3dd5c085d507d9b18a151ed453 Mon Sep 17 00:00:00 2001 From: audyodi Date: Fri, 20 Oct 2017 23:58:48 +0700 Subject: [PATCH 1/7] Remove inputValueTracking from ReactDOMComponent-test dependency --- .../src/__tests__/ReactDOMComponent-test.js | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/packages/react-dom/src/__tests__/ReactDOMComponent-test.js b/packages/react-dom/src/__tests__/ReactDOMComponent-test.js index b0f205a1485..635dfeca7f5 100644 --- a/packages/react-dom/src/__tests__/ReactDOMComponent-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMComponent-test.js @@ -14,7 +14,6 @@ describe('ReactDOMComponent', () => { var ReactTestUtils; var ReactDOM; var ReactDOMServer; - var inputValueTracking; function normalizeCodeLocInfo(str) { return str && str.replace(/\(at .+?:\d+\)/g, '(at **)'); @@ -26,8 +25,6 @@ describe('ReactDOMComponent', () => { ReactDOM = require('react-dom'); ReactDOMServer = require('react-dom/server'); ReactTestUtils = require('react-dom/test-utils'); - // TODO: can we express this test with only public API? - inputValueTracking = require('../client/inputValueTracking'); }); describe('updateDOM', () => { @@ -832,6 +829,32 @@ describe('ReactDOMComponent', () => { describe('mountComponent', () => { var mountComponent; + var getTracker = (node: any) => { + var descriptor = Object.getOwnPropertyDescriptor( + node.constructor.prototype, + 'value', + ); + + var currentValue = '' + node.value; + + Object.defineProperty(node, 'value', { + enumerable: descriptor.enumerable, + configurable: true, + get: () => { + return descriptor.get.call(this); + }, + set: (value) => { + currentValue = '' + value; + descriptor.set.call(this, value); + }, + }); + + return { + getValue() { + return currentValue; + }, + }; + }; beforeEach(() => { mountComponent = function(props) { @@ -1151,18 +1174,14 @@ describe('ReactDOMComponent', () => { , container, ); - - var tracker = inputValueTracking._getTrackerFromNode(inst); - + var tracker = getTracker(inst); expect(tracker.getValue()).toEqual('foo'); }); it('should track textarea values', () => { var container = document.createElement('div'); var inst = ReactDOM.render(