Invert logic in findAllInRenderedTreeInternal

With DOM components we won't be able to go from public instance to internal instance reliably, so do the traversal on internal instances.
This commit is contained in:
Ben Alpert committed 2015-06-16 14:38:03 -07:00
1 parent efcf2e318e
commit c9b0c26966
1 file changed
+29 -30
+29 -30
View File
@@ -37,6 +37,34 @@ function Event(suffix) {}
* @class ReactTestUtils
*/
function findAllInRenderedTreeInternal(inst, test) {
if (!inst || !inst.getPublicInstance) {
return [];
}
var publicInst = inst.getPublicInstance()
var ret = test(publicInst) ? [publicInst] : [];
if (ReactTestUtils.isDOMComponent(publicInst)) {
var renderedChildren = inst._renderedComponent._renderedChildren;
var key;
for (key in renderedChildren) {
if (!renderedChildren.hasOwnProperty(key)) {
continue;
}
ret = ret.concat(
findAllInRenderedTreeInternal(
renderedChildren[key],
test
)
);
}
} else if (ReactTestUtils.isCompositeComponent(publicInst)) {
ret = ret.concat(
findAllInRenderedTreeInternal(inst._renderedComponent, test)
);
}
return ret;
}
/**
* Todo: Support the entire DOM.scry query syntax. For now, these simple
* utilities will suffice for testing purposes.
@@ -131,36 +159,7 @@ var ReactTestUtils = {
if (!inst) {
return [];
}
var ret = test(inst) ? [inst] : [];
if (ReactTestUtils.isDOMComponent(inst)) {
var internalInstance = ReactInstanceMap.get(inst);
var renderedChildren = internalInstance
._renderedComponent
._renderedChildren;
var key;
for (key in renderedChildren) {
if (!renderedChildren.hasOwnProperty(key)) {
continue;
}
if (!renderedChildren[key].getPublicInstance) {
continue;
}
ret = ret.concat(
ReactTestUtils.findAllInRenderedTree(
renderedChildren[key].getPublicInstance(),
test
)
);
}
} else if (ReactTestUtils.isCompositeComponent(inst)) {
ret = ret.concat(
ReactTestUtils.findAllInRenderedTree(
ReactTestUtils.getRenderedChildOfCompositeComponent(inst),
test
)
);
}
return ret;
return findAllInRenderedTreeInternal(ReactInstanceMap.get(inst), test);
},
/**