add jsdom; add basic Avatar component test

This commit is contained in:
Kai Schaper 2016-10-10 22:32:03 +02:00
parent 1a1b9bbbc0
commit 998f161e1d
4 changed files with 36 additions and 3 deletions

View file

@ -1,7 +1,7 @@
{ {
"name": "mastodon", "name": "mastodon",
"scripts": { "scripts": {
"test": "mocha --compilers js:babel-register ./spec/javascript/components/*.test.jsx" "test": "mocha --require ./spec/javascript/setup.js --compilers js:babel-register ./spec/javascript/components/*.test.jsx"
}, },
"devDependencies": { "devDependencies": {
"axios": "^0.14.0", "axios": "^0.14.0",
@ -16,6 +16,7 @@
"enzyme": "^2.4.1", "enzyme": "^2.4.1",
"es6-promise": "^3.2.1", "es6-promise": "^3.2.1",
"immutable": "^3.8.1", "immutable": "^3.8.1",
"jsdom": "^9.6.0",
"mocha": "^3.1.1", "mocha": "^3.1.1",
"moment": "^2.14.1", "moment": "^2.14.1",
"react": "^15.3.2", "react": "^15.3.2",

View file

@ -0,0 +1,12 @@
import { expect } from 'chai';
import { render } from 'enzyme';
import Avatar from '../../../app/assets/javascripts/components/components/avatar'
describe('<Avatar />', function() {
it('renders an img with the given src', function() {
const src = '/path/to/image.jpg';
const wrapper = render(<Avatar src={src} size={100} />);
expect(wrapper.find(`img[src="${src}"]`)).to.have.length(1);
});
});

View file

@ -1,7 +1,5 @@
import { expect } from 'chai'; import { expect } from 'chai';
import { shallow } from 'enzyme'; import { shallow } from 'enzyme';
import React from 'react';
global.React = React;
import LoadingIndicator from '../../../app/assets/javascripts/components/components/loading_indicator' import LoadingIndicator from '../../../app/assets/javascripts/components/components/loading_indicator'

22
spec/javascript/setup.js Normal file
View 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');