Refactored test, so UT can run properly
This commit is contained in:
parent
1a98c9b40e
commit
3b5d2a2407
@ -1,9 +1,17 @@
|
||||
import React from 'react';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import {render, screen} from '@testing-library/react';
|
||||
import { createStore } from "redux";
|
||||
import { Provider } from "react-redux";
|
||||
|
||||
import App from './App';
|
||||
import {todoReducer} from "../state/todo/reducers";
|
||||
|
||||
test('renders learn react link', () => {
|
||||
render(<App />);
|
||||
const linkElement = screen.getByText(/learn react/i);
|
||||
const store = createStore(todoReducer);
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<App />
|
||||
</Provider>
|
||||
)
|
||||
const linkElement = screen.getByText(/Todo List/i);
|
||||
expect(linkElement).toBeInTheDocument();
|
||||
});
|
||||
|
@ -1,35 +1,53 @@
|
||||
import React from "react";
|
||||
import {screen, render, fireEvent, getByRole} from "@testing-library/react"
|
||||
import { createStore } from "redux";
|
||||
import { Provider } from "react-redux";
|
||||
|
||||
import Todo from "./Todo";
|
||||
import {todoReducer} from "../../state/todo/reducers";
|
||||
import {store} from "../../state/store";
|
||||
|
||||
describe("Todo", () => {
|
||||
|
||||
const props = {
|
||||
id: 1,
|
||||
text: "Buy milk",
|
||||
completed: false,
|
||||
onToggle: jest.fn(),
|
||||
onDelete: jest.fn(),
|
||||
};
|
||||
|
||||
it("should render todo text", () => {
|
||||
render(<Todo {...props} />);
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<Todo {...props}/>
|
||||
</Provider>
|
||||
)
|
||||
expect(screen.getByText(props.text)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("should call onToggle when checkbox is clicked", () => {
|
||||
render(<Todo {...props} />);
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<Todo {...props} />
|
||||
</Provider>
|
||||
)
|
||||
fireEvent.click(screen.getByRole("checkbox"));
|
||||
expect(props.onToggle).toBeCalledWith(props.id);
|
||||
});
|
||||
|
||||
it("should call onDelete when delete button is clicked", () => {
|
||||
render(<Todo {...props} />);
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<Todo {...props} />
|
||||
</Provider>
|
||||
)
|
||||
fireEvent.click(screen.getByRole("button"));
|
||||
expect(props.onDelete).toBeCalledWith(props.id);
|
||||
})
|
||||
|
||||
it("should have line-through style when completed is true", () => {
|
||||
render(<Todo {...props} completed={true} />);
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<Todo {...props} completed={true} />
|
||||
</Provider>
|
||||
)
|
||||
expect(screen.getByText(props.text)).toHaveStyle("text-decoration: line-through");
|
||||
})
|
||||
})
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { createStore } from "redux";
|
||||
|
||||
import { todoReducer } from "./todo/reducers";
|
||||
import {todoReducer} from "./todo/reducers";
|
||||
|
||||
export const store = createStore(todoReducer);
|
||||
|
Loading…
x
Reference in New Issue
Block a user