From d422ebdbaf69aff1c825b26b90c9ecf66b272a83 Mon Sep 17 00:00:00 2001 From: Glenn Murray Date: Fri, 24 Jan 2014 11:22:08 +1100 Subject: [PATCH] Failing test for memory leak issue #954 renderComponentToString registers events. If the calling code does not unmount the component or unregister the listeners this will leak memory. Passing this test should fix this. --- .../__tests__/ReactServerRendering-test.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/environment/__tests__/ReactServerRendering-test.js b/src/environment/__tests__/ReactServerRendering-test.js index 85c62811a3bd7..0231677be60ca 100644 --- a/src/environment/__tests__/ReactServerRendering-test.js +++ b/src/environment/__tests__/ReactServerRendering-test.js @@ -27,7 +27,8 @@ require('mock-modules') .dontMock('ReactMount') .dontMock('ReactServerRendering') .dontMock('ReactTestUtils') - .dontMock('ReactMarkupChecksum'); + .dontMock('ReactMarkupChecksum') + .dontMock('EventPluginHub'); var mocks = require('mocks'); @@ -37,6 +38,7 @@ var ReactTestUtils; var ReactServerRendering; var ReactMarkupChecksum; var ExecutionEnvironment; +var EventPluginHub; var ID_ATTRIBUTE_NAME; @@ -50,6 +52,7 @@ describe('ReactServerRendering', function() { ExecutionEnvironment.canUseDOM = false; ReactServerRendering = require('ReactServerRendering'); ReactMarkupChecksum = require('ReactMarkupChecksum'); + EventPluginHub = require('EventPluginHub'); var DOMProperty = require('DOMProperty'); ID_ATTRIBUTE_NAME = DOMProperty.ID_ATTRIBUTE_NAME; @@ -234,6 +237,20 @@ describe('ReactServerRendering', function() { expect(numClicks).toEqual(1); }); + it('should not register listeners', function() { + var Link = React.createClass({ + handleClick: function() {}, + render: function() { + return link; + } + }); + var link = ; + ReactServerRendering.renderComponentToString(link, function(str) { + var listener = EventPluginHub.getListener(link._rootNodeID, 'onClick'); + expect(listener).not.toEqual(link.handleClick); + }); + }); + it('should throw with silly args', function() { expect( ReactServerRendering.renderComponentToString.bind(