-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #37 from Chamindu36/ts-dev-migration
Add test cases to the components - Part 1
- Loading branch information
Showing
8 changed files
with
174 additions
and
57 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import { render, screen } from '@testing-library/react'; | ||
import Button, { BUTTON_TYPE_CLASSES } from '../button.component'; | ||
|
||
describe('Button tests', () => { | ||
|
||
test('should render base button when nothing is passed', () => { | ||
render(<Button />); | ||
|
||
const buttonElement = screen.getByRole('button'); | ||
expect(buttonElement).toHaveStyle('background-color: ButtonFace;'); | ||
}); | ||
|
||
test('should render google button when google is passed', () => { | ||
render(<Button buttonType={BUTTON_TYPE_CLASSES.google} />); | ||
|
||
const buttonElement = screen.getByRole('button'); | ||
expect(buttonElement).toHaveStyle('background-color: ButtonFace;'); | ||
}); | ||
|
||
test('should render inverted button when inverted is passed', () => { | ||
render(<Button buttonType={BUTTON_TYPE_CLASSES.inverted} />); | ||
|
||
const buttonElement = screen.getByRole('button'); | ||
expect(buttonElement).toHaveStyle('background-color: ButtonFace;'); | ||
}); | ||
|
||
test('should be disabled if isLoading is true', () => { | ||
render(<Button isLoading={true} />); | ||
|
||
const buttonElement = screen.getByRole('button'); | ||
expect(buttonElement).toBeDisabled(); | ||
}); | ||
|
||
}); |
29 changes: 29 additions & 0 deletions
29
src/components/cart-icon/__tests__/cart-icon.component.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { screen } from "@testing-library/react"; | ||
import { renderWithProviders } from "../../../utils/test/test.utils"; | ||
import CartIcon from "../cart-icon.component"; | ||
|
||
describe('Cart-Icon tests', () => { | ||
|
||
test('Uses preloaded state to render', () => { | ||
const preloadedState = [ | ||
{ | ||
id: 1, | ||
imageUrl: 'https://i.ibb.co/0jqHpnp/sneakers.png', | ||
name: 'Sneakers', | ||
price: 100, | ||
quantity: 1 | ||
} | ||
]; | ||
|
||
renderWithProviders(<CartIcon />, { | ||
preloadedState: | ||
{ | ||
cart: { | ||
cartItems: preloadedState | ||
} | ||
} | ||
}); | ||
const cartIconElement = screen.getByText('1'); | ||
expect(cartIconElement).toBeInTheDocument(); | ||
}); | ||
}); |
71 changes: 71 additions & 0 deletions
71
src/routes/navigation/__tests__/navigation.component.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
import React from 'react'; | ||
import * as reactRedux from 'react-redux'; | ||
import { screen, fireEvent } from '@testing-library/react'; | ||
import { renderWithProviders } from '../../../utils/test/test.utils'; | ||
import { SignOutStart } from '../../../store/user/user.action'; | ||
import Navigation from '../navigation.component'; | ||
|
||
describe('Navigation tests', () => { | ||
|
||
test('It should render a Sign In link if there is no currentUser', () => { | ||
renderWithProviders(<Navigation />, { | ||
preloadedState: { | ||
user: { | ||
currentUser: null, | ||
}, | ||
}, | ||
}); | ||
|
||
expect(screen.getByText('SIGN IN')).toBeInTheDocument(); | ||
}); | ||
|
||
test('It should not render Sign In if there is a currentUser', () => { | ||
renderWithProviders(<Navigation />, { | ||
preloadedState: { | ||
user: { | ||
currentUser: {}, | ||
}, | ||
}, | ||
}); | ||
|
||
expect(screen.queryByText('SIGN IN')).toBeNull(); | ||
}); | ||
|
||
test('It should render Sign Out if there is a currentUser', () => { | ||
renderWithProviders(<Navigation />, { | ||
preloadedState: { | ||
user: { | ||
currentUser: {}, | ||
}, | ||
}, | ||
}); | ||
|
||
expect(screen.getByText('SIGN OUT')).toBeInTheDocument(); | ||
}); | ||
|
||
test('It should render cart dropdown if isCartOpen is true', () => { | ||
renderWithProviders(<Navigation />, { | ||
preloadedState: { | ||
cart: { | ||
isCartOpen: true, | ||
cartItems: [], | ||
}, | ||
}, | ||
}); | ||
|
||
expect(screen.getByText('Your cart is empty')).toBeInTheDocument(); | ||
}); | ||
|
||
test('It should not render a cart dropdown if isCartOpen is false', () => { | ||
renderWithProviders(<Navigation />, { | ||
preloadedState: { | ||
cart: { | ||
isCartOpen: false, | ||
cartItems: [], | ||
}, | ||
}, | ||
}); | ||
|
||
expect(screen.queryByText('Your cart is empty')).toBeNull(); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import React from "react"; | ||
import { render, screen } from "@testing-library/react"; | ||
import { Provider } from "react-redux"; | ||
import { createStore } from "redux"; | ||
import { rootReducer } from "../../store/root-reducer"; | ||
import { BrowserRouter } from "react-router-dom"; | ||
|
||
export function renderWithProviders( | ||
ui, | ||
{ | ||
preloadedState = {}, | ||
store = createStore(rootReducer, preloadedState), | ||
...renderOptions | ||
} = {} | ||
) { | ||
const Wrapper = ({ children }) => { | ||
return ( | ||
<Provider store={store}> | ||
<BrowserRouter> | ||
{children} | ||
</BrowserRouter> | ||
</Provider> | ||
); | ||
} | ||
return render(ui, { wrapper: Wrapper, ...renderOptions }); | ||
}; |