Skip to content

Commit

Permalink
Test that postDidChange called when card is removed or payload changes
Browse files Browse the repository at this point in the history
refs #319
  • Loading branch information
bantic committed Apr 7, 2016
1 parent 6164286 commit 3b159f9
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/js/models/card-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ export default class CardNode {
this.mode = mode;

let method = mode === 'display' ? 'render' : 'edit';
method = this.card[method];

let rendered = this.card[method]({
assert(`Card is missing "${method}" (tried to render mode: "${mode}")`,
!!method);
let rendered = method({
env: this.env,
options: this.options,
payload: this.section.payload
Expand Down
37 changes: 37 additions & 0 deletions tests/unit/editor/editor-events-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,43 @@ test('postDidChange callback fired when post is modified via user input', (asser
assert.equal(postChanged, 1, 'postDidChange fired once');
});

test('postDidChange callback fired when card payload changes', (assert) => {
let env;
let cards = [{
name: 'simple-card',
type: 'dom',
render({env: _env}) {
env = _env;
return $('<div id="my-simple-card">simple-card (display)</div>')[0];
},
edit({env: _env}) {
env = _env;
return $('<div id="my-simple-card">simple-card (edit)</div>')[0];
}
}];
editor = Helpers.mobiledoc.renderInto(editorElement, ({post, cardSection}) => {
return post([cardSection('simple-card')]);
}, { cards });

let postDidChange = 0;
editor.postDidChange(() => postDidChange++);

env.save({});
assert.equal(postDidChange, 1, 'postDidChange called after save');

postDidChange = 0;
env.edit();
assert.equal(postDidChange, 0, 'postDidChange not called after edit');

postDidChange = 0;
env.cancel();
assert.equal(postDidChange, 0, 'postDidChange not called after cancel');

postDidChange = 0;
env.remove();
assert.equal(postDidChange, 1, 'postDidChange called after remove');
});

test('stateDidChange callback fired when markup is toggled and there is a selection', (assert) => {
let done = assert.async();
assert.expect(1);
Expand Down

0 comments on commit 3b159f9

Please sign in to comment.