UNPKG

halvalla

Version:

Generate React elements with CoffeeScript functions

489 lines (376 loc) 14 kB
> halvalla@1.7.0 pretest /Users/jim/clones/halvalla > npm run compile > halvalla@1.7.0 compile /Users/jim/clones/halvalla > coffee --compile --output lib/ src/ > halvalla@1.7.0 test /Users/jim/clones/halvalla > npm run test-mithril; npm run test-react; npm run test-teacup; rm test > halvalla@1.7.0 test-mithril /Users/jim/clones/halvalla > rm test; ln -s test-mithril test; mocha a class enclosed div ✓ without decoration classes ✓ with text children a simple div ✓ simple div without decoration multiple tags ✓ with multiple text children multiple tags ✓ with text children Attributes with a hash ✓ renders the corresponding HTML attributes Boolean true value ✓ is replaced with the attribute name. Useful for attributes like disabled Boolean false value ✓ is omitted null and undefined value ✓ renders just the attribute name string value ✓ is used verbatim number value ✓ is stringified array value ✓ is comma separated data attribute ✓ expands attributes nested hyphenated attribute ✓ renders coffeekup.org example ✓ works Comments ✓ renders HTML <!--comments--> CSS Selectors id selector ✓ sets the id attribute ✓ must be greater than length 1 one class selector ✓ adds an html class and a class attribute ✓ prepends the selector class multi-class selector ✓ adds all the classes with an id and classes, separated by spaces ✓ adds ids and classes with minimal whitespace without contents ✓ still adds attributes custom tag ✓ should render ✓ should render empty given null content ✓ should render with attributes ✓ should render with attributes and content custom tag-like ✓ should render ✓ should accept a selector and attributes doctype ✓ default should render html5 doctype ✓ xml should render xml header ✓ 5 should render html 5 doctype ✓ transitional should render transitional doctype HereDocs ✓ preserves line breaks IE conditionals ✓ renders conditional comments nesting templates ✓ renders nested template in the same output plugins ✓ are applied via use render ✓ doesn't modify the attributes object nested in a template ✓ returns the nested template without clobbering the parent result ✓ is aliased as cede Self Closing Tags <img /> ✓ should render ✓ should render with attributes ✓ should throw when passed content <br /> ✓ should render <link /> ✓ should render with attributes stack trace ✓ should contain tag names tag ✓ renders Dates ✓ renders text verbatim ✓ renders numbers ✓ renders undefined as '' ✓ renders empty tags text ✓ renders text verbatim ✓ renders numbers ✓ is assumed when it is returned from contents Context data ✓ is an argument to the template function Local vars ✓ are in the template function closure 56 passing (110ms) > halvalla@1.7.0 test-react /Users/jim/clones/halvalla > rm test; ln -s test-react test; mocha Attributes with a hash ✓ renders the corresponding HTML attributes data attribute ✓ expands attributes nested hyphenated attribute ✓ renders coffeekup.org example ✓ works components with child 1) renders child with dooDad components 2) render with dooDad use of render in classes 3) supports a single child nesting components 4) supports a multipl children render ✓ renders text verbatim ✓ renders numbers ✓ renders undefined as '' ✓ renders empty tags 5) renders text tags as strings 6) throws on undefined element types CSS Selectors id selector ✓ sets the id attribute ✓ must be greater than length 1 one class selector ✓ adds an html class and a class attribute ✓ prepends the selector class multi-class selector ✓ adds all the classes with an id and classes, separated by spaces ✓ adds ids and classes with minimal whitespace without contents ✓ still adds attributes custom tag ✓ should render ✓ should render empty given null content ✓ should render with attributes ✓ should render with attributes and content Auto escaping ✓ escapes crel attributes ✓ escapea single quotes in crel attributes a script crel ✓ adds HTML entities for sensitive characters script crel ✓ escapes / HereDocs ✓ preserves line breaks nesting templates ✓ renders nested template in the same output pureComponent 7) returns components without adding them to the parent stack plugins ✓ are applied via use render 8) doesn't modify the attributes object nested in a template ✓ returns the nested template without clobbering the parent result Self Closing Tags <img/> ✓ should render ✓ should render with attributes ✓ should throw when passed content <br/> ✓ should render <link/> ✓ should render with attributes stack trace ✓ should contain crel names text 9) renders text verbatim 10) renders numbers Context data ✓ is an argument to the template function Local vars ✓ are in the template function closure 35 passing (146ms) 10 failing 1) components with child renders child with dooDad: Error: expected '<dooDad label="Boo"><div class="aclass">some text</div></dooDad>' to equal '<div class="doodad">Boo<div class="aclass">some text</div><span>some last text</span></div>' at Assertion.assert (node_modules/expect.js/index.js:96:13) at Assertion.be.Assertion.equal (node_modules/expect.js/index.js:216:10) at Context.<anonymous> (test-react/components.coffee:31:22) 2) components render with dooDad: Error: expected '<dooDad label="Label text."><span>A single text child</span></dooDad>' to equal '<div class="doodad">Label text.<span>A single text child</span><span>some last text</span></div>' at Assertion.assert (node_modules/expect.js/index.js:96:13) at Assertion.be.Assertion.equal (node_modules/expect.js/index.js:216:10) at Context.<anonymous> (test-react/components.coffee:38:22) 3) use of render in classes supports a single child: Error: expected '<widget></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>' at Assertion.assert (node_modules/expect.js/index.js:96:13) at Assertion.be.Assertion.equal (node_modules/expect.js/index.js:216:10) at Context.<anonymous> (test-react/components.coffee:44:10) 4) nesting components supports a multipl children: Error: expected '<dooDad label="A"><dooDad label="B"></dooDad><dooDad label="C"></dooDad></dooDad>' to equal '<div class="doodad">A<div class="doodad">C<span>some last text</span></div><span>some last text</span></div>' at Assertion.assert (node_modules/expect.js/index.js:96:13) at Assertion.be.Assertion.equal (node_modules/expect.js/index.js:216:10) at Context.<anonymous> (test-react/components.coffee:52:10) 5) render renders text tags as strings: TypeError: tag.text is not a function at test-react/crel.coffee:21:26 at lib/halvalla.js:592:25 at Halvalla.march (lib/halvalla.js:528:17) at Halvalla.create (lib/halvalla.js:595:14) at Halvalla.render (lib/halvalla.js:609:31) at allTags.(anonymous function).bound.(anonymous function) (lib/halvalla.js:640:34) at Context.<anonymous> (test-react/crel.coffee:21:12) 6) render throws on undefined element types: Error: expected 'HTML tag type is invalid: expected a string but got boolean' to match /got: undefined/ at Assertion.assert (node_modules/expect.js/index.js:96:13) at Assertion.match (node_modules/expect.js/index.js:328:10) at Assertion.throwError.Assertion.throwException (node_modules/expect.js/index.js:156:30) at Context.<anonymous> (test-react/crel.coffee:24:51) 7) nesting templates pureComponent returns components without adding them to the parent stack: Invariant Violation: renderToStaticMarkup(): You must pass a valid ReactElement. at invariant (node_modules/fbjs/lib/invariant.js:44:15) at GreatEmptiness.renderToStaticMarkup [as conjurer] (node_modules/react-dom/lib/ReactServerRendering.js:82:76) at lib/halvalla.js:618:31 at Halvalla.render (lib/halvalla.js:621:9) at allTags.(anonymous function).bound.(anonymous function) (lib/halvalla.js:640:34) at Context.<anonymous> (test-react/nesting.coffee:33:14) 8) render doesn't modify the attributes object: Error: expected '<p><a id="foobar" href="http://example.com" class="first">link 1</a><a id="foobar" href="http://example.com">link 2</a></p>' to equal '<p><a id="foobar" class="first" href="http://example.com">link 1</a><a id="foobar" href="http://example.com">link 2</a></p>' at Assertion.assert (node_modules/expect.js/index.js:96:13) at Assertion.be.Assertion.equal (node_modules/expect.js/index.js:216:10) at Context.<anonymous> (test-react/render.coffee:18:32) 9) text renders text verbatim: Invariant Violation: renderToStaticMarkup(): You must pass a valid ReactElement. at invariant (node_modules/fbjs/lib/invariant.js:44:15) at GreatEmptiness.renderToStaticMarkup [as conjurer] (node_modules/react-dom/lib/ReactServerRendering.js:82:76) at lib/halvalla.js:618:31 at Halvalla.render (lib/halvalla.js:621:9) at allTags.(anonymous function).bound.(anonymous function) (lib/halvalla.js:640:34) at Context.<anonymous> (test-react/text.coffee:7:12) 10) text renders numbers: Invariant Violation: renderToStaticMarkup(): You must pass a valid ReactElement. at invariant (node_modules/fbjs/lib/invariant.js:44:15) at GreatEmptiness.renderToStaticMarkup [as conjurer] (node_modules/react-dom/lib/ReactServerRendering.js:82:76) at lib/halvalla.js:618:31 at Halvalla.render (lib/halvalla.js:621:9) at allTags.(anonymous function).bound.(anonymous function) (lib/halvalla.js:640:34) at Context.<anonymous> (test-react/text.coffee:12:12) > halvalla@1.7.0 test-teacup /Users/jim/clones/halvalla > rm test; ln -s test-teacup test; mocha Attributes with a hash ✓ renders the corresponding HTML attributes Boolean true value ✓ is replaced with the attribute name. Useful for attributes like disabled Boolean false value ✓ is omitted null and undefined value ✓ renders just the attribute name string value ✓ is used verbatim number value ✓ is stringified array value ✓ is comma separated data attribute ✓ expands attributes nested hyphenated attribute ✓ renders coffeekup.org example ✓ works Comments ✓ renders HTML <!--comments--> Component ✓ takes arguments ✓ passes along the selector ✓ passes along child content ✓ lets components provide give contents to their children CSS Selectors id selector ✓ sets the id attribute ✓ must be greater than length 1 one class selector ✓ adds an html class and a class attribute ✓ prepends the selector class multi-class selector ✓ adds all the classes with an id and classes, separated by spaces ✓ adds ids and classes with minimal whitespace without contents ✓ still adds attributes custom tag ✓ should render ✓ should render empty given null content ✓ should render with attributes ✓ should render with attributes and content custom tag-like ✓ should render ✓ should accept a selector and attributes doctype ✓ default should render html5 doctype ✓ xml should render xml header ✓ 5 should render html 5 doctype ✓ transitional should render transitional doctype Auto escaping ✓ escapes tag attributes ✓ does not escape single quotes in tag attributes a script tag ✓ adds HTML entities for sensitive characters raw filter ✓ prints sensitive characters verbatim combined with the escape filter ✓ gives the author granular control of escaping script tag ✓ escapes / HereDocs ✓ preserves line breaks IE conditionals ✓ renders conditional comments nesting templates ✓ renders nested template in the same output plugins ✓ are applied via use render ✓ doesn't modify the attributes object nested in a template ✓ returns the nested template without clobbering the parent result ✓ is aliased as cede renderable decorator ✓ makes a template directly callable ✓ supports composition with renderable and non-renderable helpers Self Closing Tags <img /> ✓ should render ✓ should render with attributes ✓ should throw when passed content <br /> ✓ should render <link /> ✓ should render with attributes stack trace ✓ should contain tag names tag ✓ renders Dates ✓ renders text verbatim ✓ renders numbers ✓ renders undefined as '' ✓ renders empty tags text ✓ renders text verbatim ✓ renders numbers ✓ is assumed when it is returned from contents Context data ✓ is an argument to the template function Local vars ✓ are in the template function closure 63 passing (144ms)