App.test.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import "raf/polyfill";
  2. import React from "react";
  3. import { App, appName, titleName } from "./App";
  4. import { configure, shallow, mount } from "enzyme";
  5. import Adapter from "enzyme-adapter-react-16";
  6. import toJson from 'enzyme-to-json';
  7. // Configure Enzyme for the React version we are using.
  8. // Could be in a test setup file. Required for React 16, 15, 0.14, 0.13.
  9. configure({ adapter: new Adapter() });
  10. describe("<App />>", () => {
  11. const wrapper = shallow(<App />);
  12. it("should find its elements", () => {
  13. // There is one <p> in <App />: only one shoud be present in shallow rendering.
  14. expect(wrapper.find("p").length).toBe(1);
  15. expect(wrapper.find("p.App-intro").exists()).toBe(true);
  16. expect(wrapper.find("ul").hasClass("tyler")).toBe(true);
  17. expect(wrapper.find("ul").children().length).toBe(3);
  18. expect(wrapper.find("h1").text()).toBe("Welcome to React");
  19. });
  20. it("should find using props", () => {
  21. // "key" and "ref" could not be used that way.
  22. // CSS attribute syntax.
  23. expect(wrapper.find("[text='Some title']").length).toBe(1);
  24. // Object property selector.
  25. expect(wrapper.find({ text: "Some title" }).length).toBe(1);
  26. });
  27. // FIXME cannot make sense of video.
  28. // @see http://airbnb.io/enzyme/docs/api/ReactWrapper/find.html
  29. test.skip("should find using a constructor", () => {
  30. // expect(wrapper.find(function App() { return ... }).length).toBe(1);
  31. });
  32. it("should find using displayName", () => {
  33. const w = mount(<App />);
  34. expect(w.find(appName).length).toBe(1);
  35. expect(w.find(titleName).length).toBe(1);
  36. });
  37. it("matches the snapshot", () => {
  38. const tree = shallow(<App />);
  39. expect(toJson(tree)).toMatchSnapshot();
  40. });
  41. });