Skip to content

Instantly share code, notes, and snippets.

@SherryH
SherryH / example.js
Created December 31, 2016 04:24
Make a Spy
// a highly simplified version of a spy which counts total call
var spy = function(object, property){
var origFn = object[property];
var spyFn = function(){
spyFn.callCount++;
return origin.apply(object, arguments);
}
spyFn.callCount = 0;
object[property] = spyFn;
@SherryH
SherryH / classes.js
Last active January 4, 2017 03:31
Functional and Pseudoclassical classes
//==================================
// Functional classes
// Define methods inside the object constructing function
var makeAnimal = function(name){
var obj = {};
obj.name = name;
var privateVar = 'you can see me';
obj.speak = function () {
@SherryH
SherryH / subclass.js
Last active May 6, 2018 10:21
Functional and Pseudoclassical subclasses
//==================================
// Functional classes
// Define methods inside the object constructing function
var makeAnimal = function(name){
var obj = {};
obj.name = name;
var privateVar = ' you can see me';
obj.speak = function () {
var player = function (type) {
return function(song){
console.log('I can play '+song+' on '+ type);
}
}
var guitarPlayer = player('guitar');
guitarPlayer('Country Road');
var pianoPlayer = player('piano');
@SherryH
SherryH / jestMock1.js
Last active July 25, 2018 19:07
A Jest Mock Example
import React from 'react';
import renderer from 'react-test-renderer';
//children mock need to be defined before parent module import
jest.mock('react-bootstrap-table', () => {
return {
BootstrapTable: 'BootstrapTable',
TableHeaderColumn: 'TableHeaderColumn',
};
});
import react from 'react';
class Person extends React.Component {
constructor(props) {
super(props);
this.state = {
name: ''
};
this.handleChange = this.handleChange.bind(this);
}
import react from 'react';
class Person extends React.Component {
constructor(props) {
super(props);
this.state = {
name: ''
};
//there is no need to bind event handlers here :)
}
@SherryH
SherryH / .eslintrc.json
Created October 12, 2017 20:22
Configuration to integrate eslint with flow for developing React using webpack
{
"extends": ["airbnb", "plugin:flowtype/recommended"],
"parserOptions": {
"ecmaVersion": 7,
"sourceType": "module",
"ecmaFeatures": { "jsx": true, "modules": true }
},
"parser": "babel-eslint",
"env": {
"browser": true,
const path = require('path');
module.exports = {
devtool: 'cheap-module-eval-source-map',
entry: path.join(__dirname, './src/index.js'),
output: {
path: path.join(__dirname, './dist'),
filename: 'main.js'
},
devServer: {
publicPath: './dist/'
// Dynamic name generation
const webpack = require('webpack');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
entry: { main: path.join(__dirname, './src/index.js') },
output: {