add jsdom. tests pass

This commit is contained in:
Riley Davis
2016-12-14 13:22:01 -07:00
parent 755d090289
commit eac53a58b4
6 changed files with 177 additions and 18 deletions
+10 -8
View File
@@ -4,15 +4,17 @@ import styles from './CommentHistory.css';
const CommentHistory = props => {
return (
<div className={styles.header}>
<div className={`${styles.header} commentHistory`}>
<h2>All Comments</h2>
{props.comments.map((comment, i) => {
const asset = props.assets.find(asset => asset.id === comment.asset_id);
return <Comment
key={i}
comment={comment}
asset={asset} />;
})}
<div className="commentHistory__list">
{props.comments.map((comment, i) => {
const asset = props.assets.find(asset => asset.id === comment.asset_id);
return <Comment
key={i}
comment={comment}
asset={asset} />;
})}
</div>
</div>
);
};
+4 -2
View File
@@ -9,7 +9,7 @@
"build-watch": "NODE_ENV=development ./node_modules/.bin/webpack --config webpack.config.dev.js --watch",
"lint": "./node_modules/.bin/eslint bin/* .",
"lint-fix": "./node_modules/.bin/eslint bin/* . --fix",
"test": "NODE_ENV=test ./node_modules/.bin/mocha --compilers js:babel-core/register --recursive tests",
"test": "NODE_ENV=test ./node_modules/.bin/mocha --compilers js:babel-core/register tests/helpers/*.js --require ignore-styles --recursive tests",
"test-watch": "NODE_ENV=test ./node_modules/.bin/mocha --compilers js:babel-core/register --recursive -w tests",
"pree2e": "NODE_ENV=test ./scripts/pree2e.sh",
"e2e": "NODE_ENV=test ./node_modules/.bin/nightwatch",
@@ -106,8 +106,10 @@
"exports-loader": "^0.6.3",
"fetch-mock": "^5.5.0",
"hammerjs": "^2.0.8",
"ignore-styles": "^5.0.1",
"immutable": "^3.8.1",
"imports-loader": "^0.6.5",
"jsdom": "^9.8.3",
"json-loader": "^0.5.4",
"keymaster": "^1.6.2",
"material-design-lite": "^1.2.1",
@@ -122,7 +124,7 @@
"precss": "^1.4.0",
"pym.js": "^1.1.1",
"react": "15.3.2",
"react-addons-test-utils": "^15.3.1",
"react-addons-test-utils": "15.3.2",
"react-dom": "15.3.2",
"react-linkify": "^0.1.3",
"react-mdl": "^1.7.2",
@@ -1,26 +1,25 @@
import React from 'react';
import {shallow, mount} from 'enzyme';
import {expect} from 'chai';
import Comment from '../Comment';
import Comment from '../../../client/coral-plugin-history/Comment';
describe('coral-plugin-history/Comment', () => {
let render;
const comment = {body: 'this is a comment'};
const asset = {url: 'https://google.com'};
beforeEach(() => {
const comment = {body: 'this is a comment'};
const asset = {url: 'https://google.com'};
render = shallow(<Comment />);
render = shallow(<Comment asset={asset} comment={comment} />);
});
it('should render the provided comment body', () => {
const wrapper = mount(<Comment />);
const wrapper = mount(<Comment asset={asset} comment={comment} />);
expect(wrapper.find('.myCommentBody')).to.have.length(1);
expect(wrapper.find('.myCommentBody').text()).to.equal('this is a comment');
});
it('should render the asset url as a link', () => {
const wrapper = mount(<Comment />);
const wrapper = mount(<Comment asset={asset} comment={comment} />);
expect(wrapper.find('.myCommentAnchor')).to.have.length(1);
expect(wrapper.find('.myCommentAnchor').text()).to.equal('https://google.com');
});
@@ -0,0 +1,24 @@
import React from 'react';
import {shallow, mount} from 'enzyme';
import {expect} from 'chai';
import CommentHistory from '../../../client/coral-plugin-history/CommentHistory';
describe('coral-plugin-history/CommentHistory', () => {
let render;
const comments = [{"body":"a comment or something","status_history":[{"type":"premod","created_at":"2016-12-09T01:40:53.327Z","assigned_by":null},{"created_at":"2016-12-09T22:52:44.888Z","type":"accepted","assigned_by":"92256159-1164-4f66-9970-c7f23de7e461"}],"asset_id":"96fddf96-7c83-4008-80ad-50091997d006","created_at":"2016-12-09T01:40:53.360Z","author_id":"92256159-1164-4f66-9970-c7f23de7e461","status":"accepted","__v":0,"updated_at":"2016-12-09T22:52:44.893Z","id":"3962c2ea-4ec4-42e4-b9bd-c571ff30f56b"},{"body":"another comment","status_history":[{"type":"premod","created_at":"2016-12-09T22:53:43.148Z","assigned_by":null}],"asset_id":"96fddf96-7c83-4008-80ad-50091997d006","created_at":"2016-12-09T22:53:43.158Z","author_id":"92256159-1164-4f66-9970-c7f23de7e461","status":"premod","__v":0,"updated_at":"2016-12-09T22:53:43.158Z","id":"b51e27af-bcfd-4932-91be-e3f01a4802e6"},{"body":"can I comment?","status_history":[{"type":"premod","created_at":"2016-12-13T23:23:47.123Z","assigned_by":null},{"created_at":"2016-12-13T23:23:58.487Z","type":"accepted","assigned_by":"92256159-1164-4f66-9970-c7f23de7e461"}],"asset_id":"cef81015-1b53-4d70-b9af-6eca680f22fc","created_at":"2016-12-13T23:23:47.131Z","author_id":"92256159-1164-4f66-9970-c7f23de7e461","status":"accepted","__v":0,"updated_at":"2016-12-13T23:23:58.493Z","id":"dc9d7be1-b911-4dc3-8e1e-400e8b8d110e"},{"body":"pre-mod comment","status_history":[{"type":"premod","created_at":"2016-12-08T21:34:56.994Z","assigned_by":null},{"created_at":"2016-12-08T21:38:04.961Z","type":"rejected","assigned_by":"92256159-1164-4f66-9970-c7f23de7e461"}],"asset_id":"96fddf96-7c83-4008-80ad-50091997d006","created_at":"2016-12-08T21:34:56.997Z","author_id":"92256159-1164-4f66-9970-c7f23de7e461","status":"rejected","__v":0,"updated_at":"2016-12-08T21:38:04.965Z","id":"6f02af16-a8f8-4ead-80ea-0d48824eb74d"},{"body":"a flagged commetn","status_history":[{"type":"premod","created_at":"2016-12-08T21:38:26.342Z","assigned_by":null},{"created_at":"2016-12-09T23:47:27.009Z","type":"accepted","assigned_by":"92256159-1164-4f66-9970-c7f23de7e461"}],"asset_id":"96fddf96-7c83-4008-80ad-50091997d006","created_at":"2016-12-08T21:38:26.344Z","author_id":"92256159-1164-4f66-9970-c7f23de7e461","status":"accepted","__v":0,"updated_at":"2016-12-09T23:47:27.018Z","id":"784c5f91-36b9-4bda-b4ca-a114cef2c9f0"},{"body":"a post mod comment","status_history":[{"type":"premod","created_at":"2016-12-08T22:19:05.870Z","assigned_by":null},{"created_at":"2016-12-09T23:26:41.427Z","type":"accepted","assigned_by":"92256159-1164-4f66-9970-c7f23de7e461"}],"asset_id":"96fddf96-7c83-4008-80ad-50091997d006","created_at":"2016-12-08T22:19:05.874Z","author_id":"92256159-1164-4f66-9970-c7f23de7e461","status":"accepted","__v":0,"updated_at":"2016-12-09T23:26:41.450Z","id":"e8b86039-f850-4e53-bd9d-f8c9186a9637"},{"body":"an actual post-mod comment here","status_history":[],"asset_id":"96fddf96-7c83-4008-80ad-50091997d006","created_at":"2016-12-08T22:20:11.147Z","author_id":"92256159-1164-4f66-9970-c7f23de7e461","status":null,"__v":0,"updated_at":"2016-12-08T22:20:11.147Z","id":"cff1a318-50c6-431e-9a63-de7a7b7136bf"}];
const assets = [{"settings":null,"created_at":"2016-12-06T21:36:09.302Z","url":"localhost:3000/","scraped":null,"status":"open","updated_at":"2016-12-08T02:11:15.943Z","_id":"58472f499e775a38f23d5da0","type":"article","closedMessage":null,"id":"7302e637-f884-47c0-9723-02cc10a18617","closedAt":null},{"settings":null,"created_at":"2016-12-07T02:25:31.983Z","url":"http://localhost:3000/","scraped":null,"status":"open","updated_at":"2016-12-13T22:58:36.061Z","_id":"5847731b9e775a38f23d5da1","type":"article","closedMessage":null,"id":"96fddf96-7c83-4008-80ad-50091997d006","closedAt":null},{"settings":null,"created_at":"2016-12-12T19:04:05.770Z","url":"http://localhost:3000/embed/stream","scraped":null,"updated_at":"2016-12-14T20:13:21.934Z","_id":"584ef4a59e775a38f23d5e86","type":"article","closedMessage":null,"id":"cef81015-1b53-4d70-b9af-6eca680f22fc","closedAt":null}];
beforeEach(() => {
render = shallow(<CommentHistory comments={comments} assets={assets} />);
});
it('should render Comments as children when given comments and assets', () => {
const wrapper = mount(<CommentHistory comments={comments} assets={assets} />);
expect(wrapper.find('.commentHistory__list').children()).to.have.length(7);
});
it('should render with styles', () => {
expect(render.props().style).to.be.defined;
});
});
+48
View File
@@ -0,0 +1,48 @@
var jsdom = require('jsdom').jsdom;
var fs = require('fs');
// Storage Mock
function storageMock() {
var storage = {};
return {
setItem: function(key, value) {
storage[key] = value || '';
},
getItem: function(key) {
return storage[key] || null;
},
removeItem: function(key) {
delete storage[key];
},
get length() {
return Object.keys(storage).length;
},
key: function(i) {
var keys = Object.keys(storage);
return keys[i] || null;
}
};
}
global.document = jsdom(fs.readFileSync(__dirname + '/index.test.html'));
global.window = document.defaultView;
// these lines are required for react-mdl
global.window.CustomEvent = undefined;
require('react-mdl/extra/material');
global.Element = global.window.Element;
global.navigator = {
userAgent: 'node.js'
};
global.documentRef = document;
global.localStorage = {};
global.sessionStorage = storageMock();
global.XMLHttpRequest = storageMock();
global.Headers = function(headers) {
return headers;
};
File diff suppressed because one or more lines are too long