describe("ResultsNode", function() {
  it("wraps a result", function() {
    var fakeResult = {
        id: 123,
        message: "foo"
      },
      node = new j$.ResultsNode(fakeResult, "suite", null);

    expect(node.result).toBe(fakeResult);
    expect(node.type).toEqual("suite");
  });

  it("can add children with a type", function() {
    var fakeResult = {
        id: 123,
        message: "foo"
      },
      fakeChildResult = {
        id: 456,
        message: "bar"
      },
      node = new j$.ResultsNode(fakeResult, "suite", null);

    node.addChild(fakeChildResult, "spec");

    expect(node.children.length).toEqual(1);
    expect(node.children[0].result).toEqual(fakeChildResult);
    expect(node.children[0].type).toEqual("spec");
  });

  it("has a pointer back to its parent ResultNode", function() {
    var fakeResult = {
        id: 123,
        message: "foo"
      },
      fakeChildResult = {
        id: 456,
        message: "bar"
      },
      node = new j$.ResultsNode(fakeResult, "suite", null);

    node.addChild(fakeChildResult, "spec");

    expect(node.children[0].parent).toBe(node);
  });

  it("can provide the most recent child", function() {
    var fakeResult = {
        id: 123,
        message: "foo"
      },
      fakeChildResult = {
        id: 456,
        message: "bar"
      },
      node = new j$.ResultsNode(fakeResult, "suite", null);

    node.addChild(fakeChildResult, "spec");

    expect(node.last()).toBe(node.children[node.children.length - 1]);
  });
});
