Skip to content

Commit

Permalink
Merge pull request #30 from bustlelabs/pass-args-to-atoms
Browse files Browse the repository at this point in the history
Pass dom, isInEditor args to atoms
  • Loading branch information
bantic committed May 12, 2016
2 parents b637a47 + 6c98424 commit 00876d4
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
2 changes: 2 additions & 0 deletions lib/renderers/0-3.js
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,8 @@ export default class Renderer {
_createAtomArgument(atom, value, payload) {
let env = {
name: atom.name,
isInEditor: false,
dom: this.dom,
onTeardown: (callback) => this._registerTeardownCallback(callback)
};

Expand Down
29 changes: 23 additions & 6 deletions tests/unit/renderers/0-3-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,12 @@ test('render mobiledoc with list section and list items', (assert) => {
});

test('renders a mobiledoc with card section', (assert) => {
assert.expect(7);
assert.expect(8);
let cardName = 'title-card';
let expectedPayload = { name: 'bob' };
let expectedOptions = { foo: 'bar' };
let expectedDom = window.document;

let TitleCard = {
name: cardName,
type: 'dom',
Expand All @@ -243,6 +245,7 @@ test('renders a mobiledoc with card section', (assert) => {
assert.equal(env.name, cardName, 'correct name');
assert.ok(!env.isInEditor, 'isInEditor correct');
assert.ok(!!env.onTeardown, 'has onTeardown hook');
assert.deepEqual(env.dom, expectedDom, 'env has dom');

return document.createTextNode(payload.name);
}
Expand All @@ -259,7 +262,7 @@ test('renders a mobiledoc with card section', (assert) => {
]
};

renderer = new Renderer({cards: [TitleCard], cardOptions: expectedOptions});
renderer = new Renderer({cards: [TitleCard], cardOptions: expectedOptions, dom: expectedDom});
let { result: rendered } = renderer.render(mobiledoc);
assert.equal(childNodesLength(rendered), 1, 'renders 1 section');
assert.equal(innerHTML(rendered), expectedPayload.name);
Expand Down Expand Up @@ -550,18 +553,32 @@ test('XSS: unexpected markup types are not rendered', (assert) => {
});

test('renders a mobiledoc with atom', (assert) => {
assert.expect(8);
let atomName = 'hello-atom';
let expectedPayload = { name: 'bob' };
let expectedOptions = { foo: 'bar' };
let expectedValue = '@BOB';
let expectedDom = window.document;

let atom = {
name: atomName,
type: 'dom',
render({ value }) {
render({ env, payload, value, options }) {
assert.deepEqual(payload, expectedPayload, 'correct payload');
assert.deepEqual(options, expectedOptions, 'correct options');
assert.equal(value, expectedValue, 'correct value');
assert.equal(env.name, atomName, 'correct name');
assert.ok(!env.isInEditor, 'isInEditor correct');
assert.ok(!!env.onTeardown, 'has onTeardown hook');
assert.deepEqual(env.dom, expectedDom, 'env has dom');

return document.createTextNode(`Hello ${value}`);
}
};
let mobiledoc = {
version: MOBILEDOC_VERSION,
atoms: [
['hello-atom', 'Bob', { id: 42 }],
['hello-atom', expectedValue, expectedPayload],
],
cards: [],
markups: [],
Expand All @@ -571,11 +588,11 @@ test('renders a mobiledoc with atom', (assert) => {
]
]
};
renderer = new Renderer({atoms: [atom]});
renderer = new Renderer({atoms: [atom], cardOptions: expectedOptions, dom: expectedDom});
let { result: rendered } = renderer.render(mobiledoc);

let sectionEl = rendered.firstChild;
assert.equal(sectionEl.textContent, 'Hello Bob');
assert.equal(sectionEl.textContent, 'Hello ' + expectedValue);
});


Expand Down

0 comments on commit 00876d4

Please sign in to comment.