'use strict'; describe("markups", function() { var element; afterEach(function() { dealoc(element); }); it('should translate {{}} in text', inject(function($rootScope, $compile) { element = $compile('
hello {{name}}!
')($rootScope) $rootScope.$digest(); expect(sortedHtml(element)).toEqual('
hello !
'); $rootScope.name = 'Misko'; $rootScope.$digest(); expect(sortedHtml(element)).toEqual('
hello Misko!
'); })); it('should translate {{}} in terminal nodes', inject(function($rootScope, $compile) { element = $compile('')($rootScope) $rootScope.$digest(); expect(sortedHtml(element).replace(' selected="true"', '')). toEqual(''); $rootScope.name = 'Misko'; $rootScope.$digest(); expect(sortedHtml(element).replace(' selected="true"', '')). toEqual(''); })); it('should translate {{}} in attributes', inject(function($rootScope, $compile) { element = $compile('
')($rootScope) $rootScope.path = 'a/b'; $rootScope.$digest(); expect(element.attr('src')).toEqual("http://server/a/b.png"); })); describe('OPTION value', function() { beforeEach(function() { this.addMatchers({ toHaveValue: function(expected){ this.message = function() { return 'Expected "' + this.actual.html() + '" to have value="' + expected + '".'; }; var value; htmlParser(this.actual.html(), { start:function(tag, attrs){ value = attrs.value; }, end:noop, chars:noop }); return trim(value) == trim(expected); } }); }); it('should populate value attribute on OPTION', inject(function($rootScope, $compile) { element = $compile('')($rootScope) expect(element).toHaveValue('abc'); })); it('should ignore value if already exists', inject(function($rootScope, $compile) { element = $compile('')($rootScope) expect(element).toHaveValue('abc'); })); it('should set value even if newlines present', inject(function($rootScope, $compile) { element = $compile('')($rootScope) expect(element).toHaveValue('\nabc\n'); })); it('should set value even if self closing HTML', inject(function($rootScope, $compile) { // IE removes the \n from option, which makes this test pointless if (msie) return; element = $compile('')($rootScope) expect(element).toHaveValue('\n'); })); }); it('should bind href', inject(function($rootScope, $compile) { element = $compile('')($rootScope) $rootScope.url = 'http://server' $rootScope.$digest(); expect(element.attr('href')).toEqual('http://server'); })); it('should bind disabled', inject(function($rootScope, $compile) { element = $compile('')($rootScope) $rootScope.isDisabled = false; $rootScope.$digest(); expect(element.attr('disabled')).toBeFalsy(); $rootScope.isDisabled = true; $rootScope.$digest(); expect(element.attr('disabled')).toBeTruthy(); })); it('should bind checked', inject(function($rootScope, $compile) { element = $compile('')($rootScope) $rootScope.isChecked = false; $rootScope.$digest(); expect(element.attr('checked')).toBeFalsy(); $rootScope.isChecked=true; $rootScope.$digest(); expect(element.attr('checked')).toBeTruthy(); })); it('should bind selected', inject(function($rootScope, $compile) { element = $compile('')($rootScope) jqLite(document.body).append(element) $rootScope.isSelected=false; $rootScope.$digest(); expect(element.children()[1].selected).toBeFalsy(); $rootScope.isSelected=true; $rootScope.$digest(); expect(element.children()[1].selected).toBeTruthy(); })); it('should bind readonly', inject(function($rootScope, $compile) { element = $compile('')($rootScope) $rootScope.isReadonly=false; $rootScope.$digest(); expect(element.attr('readOnly')).toBeFalsy(); $rootScope.isReadonly=true; $rootScope.$digest(); expect(element.attr('readOnly')).toBeTruthy(); })); it('should bind multiple', inject(function($rootScope, $compile) { element = $compile('')($rootScope) $rootScope.isMultiple=false; $rootScope.$digest(); expect(element.attr('multiple')).toBeFalsy(); $rootScope.isMultiple='multiple'; $rootScope.$digest(); expect(element.attr('multiple')).toBeTruthy(); })); it('should bind src', inject(function($rootScope, $compile) { element = $compile('
')($rootScope) $rootScope.url = 'http://localhost/'; $rootScope.$digest(); expect(element.attr('src')).toEqual('http://localhost/'); })); it('should bind href and merge with other attrs', inject(function($rootScope, $compile) { element = $compile('')($rootScope); $rootScope.url = 'http://server'; $rootScope.rel = 'REL'; $rootScope.$digest(); expect(element.attr('href')).toEqual('http://server'); expect(element.attr('rel')).toEqual('REL'); })); it('should bind Text with no Bindings', inject(function($compile, $rootScope) { forEach(['checked', 'disabled', 'multiple', 'readonly', 'selected'], function(name) { element = $compile('
')($rootScope) $rootScope.$digest(); expect(element.attr(name)).toBe(name); dealoc(element); }); element = $compile('
')($rootScope) $rootScope.$digest(); expect(element.attr('src')).toEqual('some'); dealoc(element); element = $compile('
')($rootScope) $rootScope.$digest(); expect(element.attr('href')).toEqual('some'); dealoc(element); })); });