mirror of
https://github.com/wassname/talk.git
synced 2026-07-12 12:19:37 +08:00
add jsdom. tests pass
This commit is contained in:
@@ -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
@@ -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;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user