Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.7.3/immutable.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
var expect = chai.expect;
let state = Immutable.Map({});
const comments = [{
  "_id": "5676ed8b9104691f3b85b687",
  "content": "Lorem",
  "creator": "Admin",
  "replies": [{
    "_id": "5676ede4b7a9044c3c1d9641",
    "content": "Ipsum",
    "creator": "Admin",
    "replies": [{
      "_id": "5676eec224ab8fe23c7ce4c6",
      "content": "Dolor",
      "creator": "Admin",
      "replies": []
    }, {
      "_id": "5676eeda1c0e3d093d1f90a0",
      "content": "Sit",
      "creator": "Admin",
      "replies": []
    }]
  }, {
    "_id": "5676ee5b4b03bbac3c1f7544",
    "content": "Amet",
    "creator": "Admin",
    "replies": []
  }, {
    "_id": "5676ee91c43c05c63c319ace",
    "content": "Sup",
    "creator": "Admin",
    "replies": []
  }]
}];
state = state.update('coolPostId', post => Immutable.fromJS(comments));
const replyToPostComment = {
  _id: '1234',
  content: 'Hello',
  creator: 'RandomUser',
  replies: []
};
state = state.update('coolPostId', comment => comment.push(Immutable.fromJS(replyToPostComment)));
const expected = state.get('coolPostId').last();
expect(expected.toJS()).to.deep.equal(replyToPostComment);
const replyComment = {
  _id: '5678',
  content: 'Wellcome',
  creator: 'RandomUser2',
  replies: []
};
const reply = {
  postId: 'coolPostId',
  commentId: '1234',
  comment: replyComment
};
const addReply = c => cr => c.get('_id') === cr.commentId ? c
  .update('replies', replies => replies.push(Immutable.fromJS(cr.comment)) ) : c;
state = state.get(reply.postId)
  .map(comment => addReply(comment)(reply));
console.log(state.toJS());
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
toddmooregapro
0viewers