commit
						8d8ef18bb6
					
				
							
								
								
									
										19
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								package.json
									
									
									
									
									
								
							@ -1,6 +1,10 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "mastodon",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "test": "mocha --require ./spec/javascript/setup.js --compilers js:babel-register ./spec/javascript/components/*.test.jsx"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "axios": "^0.14.0",
 | 
			
		||||
    "babel-plugin-react-transform": "^2.0.2",
 | 
			
		||||
    "babel-plugin-transform-object-rest-spread": "^6.8.0",
 | 
			
		||||
    "babel-preset-es2015": "^6.13.2",
 | 
			
		||||
@ -8,17 +12,21 @@
 | 
			
		||||
    "babelify": "^7.3.0",
 | 
			
		||||
    "browserify": "^13.1.0",
 | 
			
		||||
    "browserify-incremental": "^3.1.1",
 | 
			
		||||
    "react": "^15.3.0",
 | 
			
		||||
    "react-dom": "^15.3.0",
 | 
			
		||||
    "react-proxy": "^1.1.8",
 | 
			
		||||
    "axios": "^0.14.0",
 | 
			
		||||
    "chai": "^3.5.0",
 | 
			
		||||
    "enzyme": "^2.4.1",
 | 
			
		||||
    "es6-promise": "^3.2.1",
 | 
			
		||||
    "immutable": "^3.8.1",
 | 
			
		||||
    "jsdom": "^9.6.0",
 | 
			
		||||
    "mocha": "^3.1.1",
 | 
			
		||||
    "moment": "^2.14.1",
 | 
			
		||||
    "react": "^15.3.2",
 | 
			
		||||
    "react-addons-perf": "^15.3.2",
 | 
			
		||||
    "react-addons-pure-render-mixin": "^15.3.1",
 | 
			
		||||
    "react-addons-test-utils": "^15.3.2",
 | 
			
		||||
    "react-dom": "^15.3.0",
 | 
			
		||||
    "react-immutable-proptypes": "^2.1.0",
 | 
			
		||||
    "react-notification": "^6.1.1",
 | 
			
		||||
    "react-proxy": "^1.1.8",
 | 
			
		||||
    "react-redux": "^5.0.0-beta.3",
 | 
			
		||||
    "react-redux-loading-bar": "^2.3.3",
 | 
			
		||||
    "react-router": "^2.8.0",
 | 
			
		||||
@ -26,6 +34,7 @@
 | 
			
		||||
    "redux": "^3.5.2",
 | 
			
		||||
    "redux-immutable": "^3.0.8",
 | 
			
		||||
    "redux-thunk": "^2.1.0",
 | 
			
		||||
    "reselect": "^2.5.4"
 | 
			
		||||
    "reselect": "^2.5.4",
 | 
			
		||||
    "sinon": "^1.17.6"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								spec/javascript/components/avatar.test.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								spec/javascript/components/avatar.test.jsx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
import { expect } from 'chai';
 | 
			
		||||
import { render } from 'enzyme';
 | 
			
		||||
 | 
			
		||||
import Avatar from '../../../app/assets/javascripts/components/components/avatar'
 | 
			
		||||
 | 
			
		||||
describe('<Avatar />', () => {
 | 
			
		||||
  it('renders an img with the given src', () => {
 | 
			
		||||
    const src = '/path/to/image.jpg';
 | 
			
		||||
    const wrapper = render(<Avatar src={src} size={100} />);
 | 
			
		||||
    expect(wrapper.find(`img[src="${src}"]`)).to.have.length(1);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										14
									
								
								spec/javascript/components/button.test.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								spec/javascript/components/button.test.jsx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
import { expect } from 'chai';
 | 
			
		||||
import { shallow } from 'enzyme';
 | 
			
		||||
import sinon from 'sinon';
 | 
			
		||||
 | 
			
		||||
import Button from '../../../app/assets/javascripts/components/components/button'
 | 
			
		||||
 | 
			
		||||
describe('<Button />', () => {
 | 
			
		||||
  it('simulates click events', () => {
 | 
			
		||||
    const onClick = sinon.spy();
 | 
			
		||||
    const wrapper = shallow(<Button onClick={onClick} />);
 | 
			
		||||
    wrapper.find('button').simulate('click');
 | 
			
		||||
    expect(onClick.calledOnce).to.equal(true);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										11
									
								
								spec/javascript/components/loading_indicator.test.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								spec/javascript/components/loading_indicator.test.jsx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
import { expect } from 'chai';
 | 
			
		||||
import { shallow } from 'enzyme';
 | 
			
		||||
 | 
			
		||||
import LoadingIndicator from '../../../app/assets/javascripts/components/components/loading_indicator'
 | 
			
		||||
 | 
			
		||||
describe('<LoadingIndicator />', () => {
 | 
			
		||||
  it('renders text that indicates loading', () => {
 | 
			
		||||
    const wrapper = shallow(<LoadingIndicator />);
 | 
			
		||||
    expect(wrapper.text()).to.match(/loading/i);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										22
									
								
								spec/javascript/setup.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								spec/javascript/setup.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
/**
 | 
			
		||||
 * http://airbnb.io/enzyme/docs/guides/jsdom.html
 | 
			
		||||
 */
 | 
			
		||||
var jsdom = require('jsdom').jsdom;
 | 
			
		||||
 | 
			
		||||
var exposedProperties = ['window', 'navigator', 'document'];
 | 
			
		||||
 | 
			
		||||
global.document = jsdom('');
 | 
			
		||||
global.window = document.defaultView;
 | 
			
		||||
Object.keys(document.defaultView).forEach((property) => {
 | 
			
		||||
  if (typeof global[property] === 'undefined') {
 | 
			
		||||
    exposedProperties.push(property);
 | 
			
		||||
    global[property] = document.defaultView[property];
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
global.navigator = {
 | 
			
		||||
  userAgent: 'node.js'
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
var React    = window.React    = global.React    = require('react');
 | 
			
		||||
var ReactDOM = window.ReactDOM = global.ReactDOM = require('react-dom');
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user