Skip to content

Instantly share code, notes, and snippets.

View bruceharris's full-sized avatar

Bruce Harris bruceharris

View GitHub Profile
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 16:20
React Unit Testing Example 9
componentDidMount () {
this._delayTimer = setTimeout(
() => this.setState({ isPastDelay: true }), 200
)
}
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 16:19
React Unit Testing Example 8
state = {
isPastDelay: false
};
@bruceharris
bruceharris / LoadingIndicator.test.js
Created March 2, 2018 16:14
React Unit Testing Example 7
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>
);
jest.runAllTimers();
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 16:09
React Unit Testing Example 6
render() {
if (this.props.isLoading) {
return null;
}
return this.props.children;
}
@bruceharris
bruceharris / LoadingIndicator.test.js
Created March 2, 2018 16:06
React Unit Testing Example 5
describe('when isLoading is true', () => {
describe('given 200ms have not yet elapsed', () => {
it('should render nothing', () => {
const wrapper = mount(
<LoadingIndicator isLoading={true}>
<div>ahoy!</div>
</LoadingIndicator>
);
expect(wrapper.html()).toBe(null);
wrapper.unmount();
@bruceharris
bruceharris / App.js
Created March 2, 2018 15:52
React Unit Testing Example 4
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
@bruceharris
bruceharris / LoadingIndicator.js
Created March 2, 2018 15:49
React Unit Testing Example 3
import React, { Component } from 'react';
import PropTypes from 'prop-types';
export default class LoadingIndicator extends Component {
render() {
return this.props.children;
}
}
LoadingIndicator.propTypes = {
@bruceharris
bruceharris / LoadingIndicator.test.js
Last active March 2, 2018 15:51
React Unit Testing Example 2
import React from 'react';
import { mount } from 'enzyme';
import LoadingIndicator from './LoadingIndicator'
describe('LoadingIndicator', () => {
describe('when isLoading is false', () => {
it('should render children', () => {
const wrapper = mount(
<LoadingIndicator isLoading={false}>
<div>ahoy!</div>
@bruceharris
bruceharris / LoadingIndicator.js
Last active March 2, 2018 15:51
React Unit Testing Example 1
import React, { Component } from 'react';
import PropTypes from 'prop-types';
export default class LoadingIndicator extends Component {
render() {
return null;
}
}
LoadingIndicator.propTypes = {
@bruceharris
bruceharris / protips.js
Last active May 4, 2016 00:43 — forked from nolanlawson/protips.js
Promise protips - stuff I wish I had known when I started with Promises
// Promise.all is good for executing many promises at once
Promise.all([
promise1,
promise2
]);
// Promise.resolve is good for wrapping synchronous code
Promise.resolve().then(function () {
if (somethingIsNotRight()) {
throw new Error("I will be rejected asynchronously!");