1
0
Fork 0
mirror of https://github.com/Oreolek/raconteur.git synced 2024-06-26 03:30:47 +03:00
raconteur/spec/elementsSpec.js
2015-05-13 21:31:30 -03:00

70 lines
2 KiB
JavaScript

'use strict'
var elements = require('raconteur/elements.js');
var a = elements.a, span = elements.span;
describe('elementHelper', function() {
it('stringifies as a tag', function() {
var elem = elements.element('span');
expect('' + elem).toBe('<span></span>')
});
it('supplies monadic methods', function () {
var elem = elements.element('span');
var elem_ = elem.class('foo').id('my_span');
expect('' + elem_).toBe('<span class="foo" id="my_span"></span>');
});
it('allows redefining previously set attributes', function () {
var elem = elements.element('span').content('foo');
expect('' + elem).toBe('<span>foo</span>');
expect('' + elem.content('bar')).toBe('<span>bar</span>');
expect('' + elem).toBe('<span>foo</span>');
});
it('adds classes with class()', function () {
expect('' + span().class('foo').class('bar'))
.toBe('<span class="foo bar"></span>');
});
it('redefines classes with class()', function () {
expect('' + span().class('foo').classes(['bar', 'baz']))
.toBe('<span class="bar baz"></span>');
});
it('allows setting most tag attributes', function () {
expect('' +
a('content').class('class').id('id').url('ref').src('src').alt('alt'))
.toBe('<a class="class" id="id" href="ref" src="src" alt="alt">content</a>')
});
it('is immutable', function() {
var span = elements.element('span');
var shouldBreak = function () {
span._content = "foo";
};
expect(shouldBreak).toThrowError();
});
});
describe('a', function() {
it('creates an <a> element', function() {
expect('' + a('foo').url('http://example.com'))
.toBe('<a href="http://example.com">foo</a>');
});
it('supplies shorthand for common action links', function (){
expect('' + a('foo').action('bar'))
.toBe('<a class="action" href="./bar">foo</a>');
expect('' + a('foo').writer('bar'))
.toBe('<a class="writer" href="./_writer_bar">foo</a>');
});
});