Jelajahi Sumber

Add more tests for ClickToCopy

Kirk Trombley 4 tahun lalu
induk
melakukan
4eecc07b28

+ 21 - 0
client/src/tests/ClickToCopy.test.js

@@ -31,6 +31,20 @@ describe("ClickToCopy", () => {
     expect(document.execCommand).toBeCalledWith("copy");
   });
 
+  it("copies text when receives keydown Enter", () => {
+    document.execCommand = jest.fn();
+    const rendered = mount(<ClickToCopy text="test-text" />);
+    rendered.find("span").first().simulate("keydown", { key: "Enter" });
+    expect(document.execCommand).toBeCalledWith("copy");
+  });
+
+  it("does not copy text when receives other keydowns", () => {
+    document.execCommand = jest.fn();
+    const rendered = mount(<ClickToCopy text="test-text" />);
+    rendered.find("span").first().simulate("keydown", { key: "Escape" });
+    expect(document.execCommand).not.toHaveBeenCalled();
+  });
+
   it("shows tooltip when hovered", () => {
     const rendered = mount(<ClickToCopy text="test-text" />);
     rendered.find("span").first().simulate("mouseover");
@@ -38,4 +52,11 @@ describe("ClickToCopy", () => {
     rendered.find("span").first().simulate("click");
     expect(rendered).toMatchSnapshot();
   });
+
+  it("resets when focused", () => {
+    const rendered = mount(<ClickToCopy text="test-text" />);
+    rendered.find("span").first().simulate("click");
+    rendered.find("span").first().simulate("focus");
+    expect(rendered).toMatchSnapshot();
+  });
 });

+ 32 - 0
client/src/tests/__snapshots__/ClickToCopy.test.js.snap

@@ -58,6 +58,38 @@ exports[`ClickToCopy renders without crashing 1`] = `
 </div>
 `;
 
+exports[`ClickToCopy resets when focused 1`] = `
+<ClickToCopy
+  text="test-text"
+>
+  <div
+    className="container"
+  >
+    <span
+      className="underlined"
+      onClick={[Function]}
+      onFocus={[Function]}
+      onKeyDown={[Function]}
+      onMouseOver={[Function]}
+      role="button"
+      tabIndex="0"
+    >
+      test-text
+    </span>
+    <span
+      className="tooltip"
+    >
+      Click to Copy
+    </span>
+    <textarea
+      className="invisible"
+      readOnly={true}
+      value="test-text"
+    />
+  </div>
+</ClickToCopy>
+`;
+
 exports[`ClickToCopy shows tooltip when hovered 1`] = `
 <ClickToCopy
   text="test-text"