Skip to content

Instantly share code, notes, and snippets.

View bruceharris's full-sized avatar

Bruce Harris bruceharris

View GitHub Profile
@bruceharris
bruceharris / App.js
Last active March 2, 2018 16:58
React Unit Testing Example 17
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import LoadingIndicator from './components/LoadingIndicator';
class App extends Component {
state = {
isLoading: true,
};
@bruceharris
bruceharris / LoadingIndicator.test.js
Created March 2, 2018 16:42
React Unit Testing Example 17
describe('on unmount', () => {
it('should clear timeout', () => {
jest.useFakeTimers();
const mockTimerValue = 12345;
setTimeout.mockReturnValue(mockTimerValue);
const wrapper = mount(
<LoadingIndicator isLoading={true}>
<div>ahoy!</div>
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 16:40
React Unit Testing Example 17
componentWillUnmount() {
clearTimeout();
}
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 16:39
React Unit Testing Example 16
componentWillUnmount() {
clearTimeout(this._delayTimer);
}
@bruceharris
bruceharris / LoadingIndicator.test.js
Created March 2, 2018 16:33
React Unit Testing Example 15
describe('on unmount', () => {
it('should clear timeout', () => {
jest.useFakeTimers();
const wrapper = mount(
<LoadingIndicator isLoading={true}>
<div>ahoy!</div>
</LoadingIndicator>
);
wrapper.unmount();
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 16:29
React Unit Testing Example 14
componentDidMount () {
this._delayTimer = setTimeout(
() => this.setState({ isPastDelay: true }), 200
);
}
@bruceharris
bruceharris / LoadingIndicator.test.js
Created March 2, 2018 16:27
React Unit Testing Example 13
describe('when isLoading is true', () => {
describe('given 200ms have elapsed', () => {
it('should render loading indicator', () => {
jest.useFakeTimers();
const wrapper = mount(
<LoadingIndicator isLoading={true}>
<div>ahoy!</div>
</LoadingIndicator>
);
@bruceharris
bruceharris / LoadingIndicator.js
Last active March 2, 2018 16:29
React Unit Testing Example 12
componentDidMount () {
this._delayTimer = setTimeout(
() => this.setState({ isPastDelay: true }), 100
);
}
@bruceharris
bruceharris / LoadingIndicator.js
Last active March 2, 2018 16:30
React Unit Testing Example 11
export default class LoadingIndicator extends Component {
static propTypes = {
isLoading: PropTypes.bool.isRequired,
};
state = {
isPastDelay: false
};
componentDidMount () {
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 16:22
React Unit Testing Example 10
render() {
if (this.props.isLoading) {
if (!this.state.isPastDelay) {
return null;
}
return <div>loading...</div>;
}
return this.props.children;
}