From df20512443c3f67473302a3dac512418f0f51e65 Mon Sep 17 00:00:00 2001
From: Chris Beer <cabeer@stanford.edu>
Date: Tue, 19 Feb 2019 09:31:38 -0800
Subject: [PATCH] Refactor ManifestListItem test to use a createWrapper helper

---
 .../src/components/ManifestListItem.test.js   | 52 ++++++++-----------
 1 file changed, 23 insertions(+), 29 deletions(-)

diff --git a/__tests__/src/components/ManifestListItem.test.js b/__tests__/src/components/ManifestListItem.test.js
index 16c46918d..2b698224f 100644
--- a/__tests__/src/components/ManifestListItem.test.js
+++ b/__tests__/src/components/ManifestListItem.test.js
@@ -2,60 +2,54 @@ import React from 'react';
 import { shallow } from 'enzyme';
 import ManifestListItem from '../../../src/components/ManifestListItem';
 
+/** */
+function createWrapper(props) {
+  return shallow(
+    <ManifestListItem
+      manifestId="http://example.com"
+      title="xyz"
+      ready
+      addWindow={() => {}}
+      fetchManifest={() => {}}
+      t={t => t}
+      {...props}
+    />,
+  ).dive(); // to unwrapp HOC created by withStyle()
+}
+
 describe('ManifestListItem', () => {
   it('renders without an error', () => {
-    const addWindow = jest.fn();
-    const wrapper = shallow(
-      <ManifestListItem
-        manifestId="http://example.com"
-        title="xyz"
-        ready
-        addWindow={addWindow}
-        t={t => t}
-      />,
-    ).dive();
+    const wrapper = createWrapper();
     expect(wrapper.find('.mirador-manifest-list-item').length).toBe(1);
     expect(wrapper.find('WithStyles(ButtonBase)').length).toBe(1);
     expect(wrapper.find('WithStyles(ButtonBase) WithStyles(Typography)').children().text()).toEqual('xyz');
   });
   it('renders a placeholder element until real data is available', () => {
-    const addWindow = jest.fn();
-    const wrapper = shallow(
-      <ManifestListItem manifestId="http://example.com" addWindow={addWindow} />,
-    ).dive();
+    const wrapper = createWrapper({ ready: false });
+
     expect(wrapper.find('.mirador-manifest-list-item').length).toBe(1);
     expect(wrapper.find('ReactPlaceholder').length).toBe(1);
   });
   it('updates and adds window when button clicked', () => {
     const addWindow = jest.fn();
-    const wrapper = shallow(
-      <ManifestListItem manifestId="http://example.com" title="xyz" addWindow={addWindow} />,
-    ).dive();
+    const wrapper = createWrapper({ addWindow });
     wrapper.find('WithStyles(ButtonBase)').simulate('click');
     expect(addWindow).toHaveBeenCalledTimes(1);
   });
   it('uses the manifest id if the title is not available', () => {
-    const addWindow = jest.fn();
-    const wrapper = shallow(
-      <ManifestListItem manifestId="http://example.com" ready addWindow={addWindow} />,
-    ).dive();
+    const wrapper = createWrapper({ ready: true, title: null });
+
     expect(wrapper.find('WithStyles(ButtonBase)').length).toBe(1);
     expect(wrapper.find('WithStyles(ButtonBase) WithStyles(Typography)').children().text()).toEqual('http://example.com');
   });
 
   it('displays the provider information', () => {
-    const addWindow = jest.fn();
-    const wrapper = shallow(
-      <ManifestListItem manifestId="http://example.com" ready provider="ACME" addWindow={addWindow} />,
-    ).dive();
+    const wrapper = createWrapper({ provider: 'ACME' });
     expect(wrapper.find('WithStyles(Typography).mirador-manifest-list-item-provider').children().text()).toEqual('ACME');
   });
 
   it('displays a placeholder provider if no information is given', () => {
-    const addWindow = jest.fn();
-    const wrapper = shallow(
-      <ManifestListItem manifestId="http://example.com" ready addWindow={addWindow} />,
-    ).dive();
+    const wrapper = createWrapper();
     expect(wrapper.find('WithStyles(Typography).mirador-manifest-list-item-provider').children().text()).toEqual('addedFromUrl');
   });
 });
-- 
GitLab