Пример #1
0
 return registeredIDs.reduce((tree, id) => {
   var ownerID = ReactComponentTreeDevtool.getOwnerID(id);
   var parentID = ReactComponentTreeDevtool.getParentID(id);
   tree[id] = {
     displayName: ReactComponentTreeDevtool.getDisplayName(id),
     text: ReactComponentTreeDevtool.getText(id),
     updateCount: ReactComponentTreeDevtool.getUpdateCount(id),
     childIDs: ReactComponentTreeDevtool.getChildIDs(id),
     // Text nodes don't have owners but this is close enough.
     ownerID: ownerID || ReactComponentTreeDevtool.getOwnerID(parentID),
     parentID,
   };
   return tree;
 }, {});
Пример #2
0
function expectTree(rootID, expectedTree, parentPath) {
  var displayName = ReactComponentTreeDevtool.getDisplayName(rootID);
  var ownerID = ReactComponentTreeDevtool.getOwnerID(rootID);
  var parentID = ReactComponentTreeDevtool.getParentID(rootID);
  var childIDs = ReactComponentTreeDevtool.getChildIDs(rootID);
  var text = ReactComponentTreeDevtool.getText(rootID);
  var element = ReactComponentTreeDevtool.getElement(rootID);
  var path = parentPath ? `${parentPath} > ${displayName}` : displayName;

  function expectEqual(actual, expected, name) {
    // Get Jasmine to print descriptive error messages.
    // We pass path so that we know where the mismatch occurred.
    expect({
      path,
      [name]: actual,
    }).toEqual({
      path,
      [name]: expected,
    });
  }

  if (expectedTree.parentDisplayName !== undefined) {
    expectEqual(
      ReactComponentTreeDevtool.getDisplayName(parentID),
      expectedTree.parentDisplayName,
      'parentDisplayName'
    );
  }
  if (expectedTree.ownerDisplayName !== undefined) {
    expectEqual(
      ReactComponentTreeDevtool.getDisplayName(ownerID),
      expectedTree.ownerDisplayName,
      'ownerDisplayName'
    );
  }
  if (expectedTree.parentID !== undefined) {
    expectEqual(parentID, expectedTree.parentID, 'parentID');
  }
  if (expectedTree.text !== undefined) {
    expectEqual(text, expectedTree.text, 'text');
    expectEqual('' + element, expectedTree.text, 'element.toString()');
  } else {
    expectEqual(text, null, 'text');
  }
  if (expectedTree.element !== undefined) {
    // TODO: Comparing elements makes tests run out of memory on errors.
    // For now, compare just types.
    expectEqual(
      element && element.type,
      expectedTree.element && expectedTree.element.type,
      'element.type'
    );
  } else if (text == null) {
    expectEqual(typeof element, 'object', 'typeof element');
  }
  if (expectedTree.children !== undefined) {
    expectEqual(
      childIDs.length,
      expectedTree.children.length,
      'children.length'
    );
    for (var i = 0; i < childIDs.length; i++) {
      expectTree(
        childIDs[i],
        {parentID: rootID, ...expectedTree.children[i]},
        path
      );
    }
  } else {
    expectEqual(childIDs, [], 'childIDs');
  }
}