import React from "react";
import { findDOMNode } from "react-dom";
import { render } from "../TestUtils";
import ScrollSync from "./ScrollSync";

function ChildComponent(_ref) {
  var clientHeight = _ref.clientHeight,
      clientWidth = _ref.clientWidth,
      scrollHeight = _ref.scrollHeight,
      scrollLeft = _ref.scrollLeft,
      scrollTop = _ref.scrollTop,
      scrollWidth = _ref.scrollWidth;

  return React.createElement(
    "div",
    null,
    "clientHeight:" + clientHeight,
    "clientWidth:" + clientWidth,
    "scrollHeight:" + scrollHeight,
    "scrollLeft:" + scrollLeft,
    "scrollTop:" + scrollTop,
    "scrollWidth:" + scrollWidth
  );
}

describe("ScrollSync", function () {
  it("should pass through an initial value of 0 for :scrollLeft and :scrollTop", function () {
    var component = render(React.createElement(
      ScrollSync,
      null,
      function (_ref2) {
        var clientHeight = _ref2.clientHeight,
            clientWidth = _ref2.clientWidth,
            scrollHeight = _ref2.scrollHeight,
            scrollLeft = _ref2.scrollLeft,
            scrollTop = _ref2.scrollTop,
            scrollWidth = _ref2.scrollWidth;
        return React.createElement(ChildComponent, {
          clientHeight: clientHeight,
          clientWidth: clientWidth,
          scrollHeight: scrollHeight,
          scrollLeft: scrollLeft,
          scrollTop: scrollTop,
          scrollWidth: scrollWidth
        });
      }
    ));
    expect(findDOMNode(component).textContent).toContain("clientHeight:0");
    expect(findDOMNode(component).textContent).toContain("clientWidth:0");
    expect(findDOMNode(component).textContent).toContain("scrollHeight:0");
    expect(findDOMNode(component).textContent).toContain("scrollLeft:0");
    expect(findDOMNode(component).textContent).toContain("scrollTop:0");
    expect(findDOMNode(component).textContent).toContain("scrollWidth:0");
  });

  it("should update :scrollLeft and :scrollTop when :onScroll is called", function () {
    var onScroll = void 0;
    var component = render(React.createElement(
      ScrollSync,
      null,
      function (params) {
        onScroll = params.onScroll;
        return React.createElement(ChildComponent, params);
      }
    ));
    onScroll({
      clientHeight: 400,
      clientWidth: 200,
      scrollHeight: 1000,
      scrollLeft: 50,
      scrollTop: 100,
      scrollWidth: 500
    });
    expect(findDOMNode(component).textContent).toContain("clientHeight:400");
    expect(findDOMNode(component).textContent).toContain("clientWidth:200");
    expect(findDOMNode(component).textContent).toContain("scrollHeight:1000");
    expect(findDOMNode(component).textContent).toContain("scrollLeft:50");
    expect(findDOMNode(component).textContent).toContain("scrollTop:100");
    expect(findDOMNode(component).textContent).toContain("scrollWidth:500");
  });
});