UNPKG

halvalla

Version:

Generate React elements with CoffeeScript functions

55 lines (47 loc) 1.89 kB
expect = require 'expect.js' {tag,Component, p,use, div,text, script, span,render,renderable,bless} = require '../lib/halvalla-react' re=require 'react' dooDad = bless class DooDad extends Component render: => props = @props div className: 'doodad', -> text props.label if props.children use (obj)-> obj.stack.push props.children span "some last text" widget = bless class Widget extends Component constructor: (args...)-> super(args...) @ render: => div className: 'foo', -> dooDad label: 'Doo', -> span "I'm passed to DooDad.props.children" describe 'components with child', -> it 'renders child with dooDad', -> bogus=render -> dooDad label: 'Boo',-> x=div ".aclass",'some text' return x expect(bogus).to.equal '<div class="doodad">Boo<div class="aclass">some text</div><span>some last text</span></div>' describe 'components', -> it 'render with dooDad', -> bogus=render -> dooDad label: 'Label text.', ()-> span 'A single text child' expect(bogus).to.equal '<div class="doodad">Label text.<span>A single text child</span><span>some last text</span></div>' describe 'use of render in classes', -> it 'supports a single child', -> expect(render -> widget ).to.equal '<div class="foo"><div class="doodad">Doo<span>I&#x27;m passed to DooDad.props.children</span><span>some last text</span></div></div>' describe 'nesting components', -> it 'supports a multipl children', -> expect(render -> dooDad label: 'A', -> dooDad label: 'B' dooDad label: 'C' ).to.equal '<div class="doodad">A<div class="doodad">C<span>some last text</span></div><span>some last text</span></div>' # React rendering does some funny things with labels and spans # who does react think it is? The Oracle? Um. yes. For now.