50 lines
1 KiB
Markdown
50 lines
1 KiB
Markdown
---
|
|
categories:
|
|
- Programming Languages
|
|
tags:
|
|
- javascript
|
|
- react
|
|
- testing
|
|
---
|
|
|
|
# Test: Routing on link click
|
|
|
|
## Component
|
|
|
|
```jsx
|
|
const CertificateHtmlLink = () => {
|
|
return (
|
|
<div className="certificate-html-link html-version-message">
|
|
<Link className="btn btn-primary ml-2" to="/some-location">
|
|
View HTML version
|
|
</Link>
|
|
</div>
|
|
);
|
|
};
|
|
```
|
|
|
|
## Test
|
|
|
|
```js
|
|
import { render, fireEvent } from "@testing-library/react";
|
|
import { Router } from "react-router-dom";
|
|
|
|
describe("<CertificateHtmlLink", () => {
|
|
it("should link to dynamic HTML certificate page URL on click event", () => {
|
|
// Arrange:
|
|
const history = createMemoryHistory({ initialEntries: ["/"] });
|
|
|
|
// Act:
|
|
const { getByText } = render(
|
|
<Router history={history}>
|
|
<CertificateHtmlLink to="/certificate/123" />
|
|
</Router>
|
|
);
|
|
|
|
// Assert:
|
|
expect(history.location.pathname).toBe("/");
|
|
fireEvent.click(getByText("View HTML version"));
|
|
expect(history.location.pathname).toBe("/certificate/123");
|
|
});
|
|
});
|
|
```
|