From 9ee2cdff44e7d496774b340de816344126c457b3 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Tue, 22 Nov 2011 21:28:39 -0800 Subject: refactor(directives): connect new compiler - turn everything into a directive --- test/BinderSpec.js | 130 +++++++++++++++++++---------------------------------- 1 file changed, 45 insertions(+), 85 deletions(-) (limited to 'test/BinderSpec.js') diff --git a/test/BinderSpec.js b/test/BinderSpec.js index a94e5eb2..84deca35 100644 --- a/test/BinderSpec.js +++ b/test/BinderSpec.js @@ -2,6 +2,8 @@ describe('Binder', function() { + var element; + function childNode(element, index) { return jqLite(element[0].childNodes[index]); } @@ -19,9 +21,8 @@ describe('Binder', function() { }); afterEach(function() { - if (this.element && this.element.dealoc) { - this.element.dealoc(); - } + dealoc(element); + dealoc(this.element); }); it('BindUpdate', inject(function($rootScope, $compile) { @@ -42,60 +43,18 @@ describe('Binder', function() { })); it('ApplyTextBindings', inject(function($rootScope, $compile) { - var element = $compile('
x
')($rootScope); + element = $compile('
x
')($rootScope); $rootScope.model = {a:123}; $rootScope.$apply(); expect(element.text()).toBe('123'); })); - it('ReplaceBindingInTextWithSpan preserve surounding text', function() { - expect(this.compileToHtml('a{{b}}c')).toBe('ac'); - }); - - it('ReplaceBindingInTextWithSpan', function() { - expect(this.compileToHtml('{{b}}')).toBe(''); - }); - - it('BindingSpaceConfusesIE', inject(function($rootScope, $compile) { - if (!msie) return; - var span = document.createElement('span'); - span.innerHTML = ' '; - var nbsp = span.firstChild.nodeValue; - expect(this.compileToHtml('{{a}} {{b}}')). - toBe('' + nbsp + ''); - dealoc(($rootScope)); - expect(this.compileToHtml('{{A}} x {{B}} ({{C}})')). - toBe('' + nbsp + 'x ' + - '' + nbsp + '()'); - })); - - it('BindingOfAttributes', inject(function($rootScope, $compile) { - var element = $compile('')($rootScope); - var attrbinding = element.attr('ng:bind-attr'); - var bindings = fromJson(attrbinding); - expect(decodeURI(bindings.href)).toBe('http://s/a{{b}}c'); - expect(bindings.foo).toBeFalsy(); - })); - - it('MarkMultipleAttributes', inject(function($rootScope, $compile) { - var element = $compile('')($rootScope); - var attrbinding = element.attr('ng:bind-attr'); - var bindings = fromJson(attrbinding); - expect(bindings.foo).toBe('{{d}}'); - expect(decodeURI(bindings.href)).toBe('http://s/a{{b}}c'); - })); - it('AttributesNoneBound', inject(function($rootScope, $compile) { var a = $compile('')($rootScope); expect(a[0].nodeName).toBe('A'); expect(a.attr('ng:bind-attr')).toBeFalsy(); })); - it('ExistingAttrbindingIsAppended', inject(function($rootScope, $compile) { - var a = $compile('')($rootScope); - expect(a.attr('ng:bind-attr')).toBe('{"b":"{{def}}","href":"http://s/{{abc}}"}'); - })); - it('AttributesAreEvaluated', inject(function($rootScope, $compile) { var a = $compile('')($rootScope); $rootScope.$eval('a=1;b=2'); @@ -106,7 +65,7 @@ describe('Binder', function() { it('InputTypeButtonActionExecutesInScope', inject(function($rootScope, $compile) { var savedCalled = false; - var element = $compile( + element = $compile( '')($rootScope); $rootScope.person = {}; $rootScope.person.save = function() { @@ -117,8 +76,8 @@ describe('Binder', function() { })); it('InputTypeButtonActionExecutesInScope2', inject(function($rootScope, $compile) { - var log = ''; - var element = $compile('')($rootScope); + var log = ""; + element = $compile('')($rootScope); $rootScope.action = function() { log += 'click;'; }; @@ -129,7 +88,7 @@ describe('Binder', function() { it('ButtonElementActionExecutesInScope', inject(function($rootScope, $compile) { var savedCalled = false; - var element = $compile('')($rootScope); + element = $compile('')($rootScope); $rootScope.person = {}; $rootScope.person.save = function() { savedCalled = true; @@ -179,7 +138,7 @@ describe('Binder', function() { })); it('RepeaterContentDoesNotBind', inject(function($rootScope, $compile) { - var element = $compile( + element = $compile( '')($rootScope); @@ -198,8 +157,8 @@ describe('Binder', function() { }); it('RepeaterAdd', inject(function($rootScope, $compile, $browser) { - var element = $compile('
')($rootScope); - $rootScope.items = [{x: 'a'}, {x: 'b'}]; + element = $compile('
')($rootScope); + $rootScope.items = [{x:'a'}, {x:'b'}]; $rootScope.$apply(); var first = childNode(element, 1); var second = childNode(element, 2); @@ -213,7 +172,7 @@ describe('Binder', function() { })); it('ItShouldRemoveExtraChildrenWhenIteratingOverHash', inject(function($rootScope, $compile) { - var element = $compile('
{{i}}
')($rootScope); + element = $compile('
{{i}}
')($rootScope); var items = {}; $rootScope.items = items; @@ -234,7 +193,7 @@ describe('Binder', function() { $exceptionHandlerProvider.mode('log'); }); inject(function($rootScope, $exceptionHandler, $compile) { - $compile('
{{error.throw()}}
', null, true)($rootScope); + element = $compile('
{{error.throw()}}
', null, true)($rootScope); var errorLogs = $exceptionHandler.errors; $rootScope.error = { @@ -277,7 +236,7 @@ describe('Binder', function() { }); it('NestedRepeater', inject(function($rootScope, $compile) { - var element = $compile( + element = $compile( '
' + '
' + '' + @@ -290,21 +249,21 @@ describe('Binder', function() { expect(sortedHtml(element)).toBe( '
'+ '<#comment>'+ - '
'+ + '
'+ '<#comment>'+ - '
    '+ - '
      '+ + '
        '+ + '
          '+ '
          '+ - '
          '+ + '
          '+ '<#comment>'+ - '
            '+ - '
              '+ + '
                '+ + '
                  '+ '
                  ' + '
                  '); })); it('HideBindingExpression', inject(function($rootScope, $compile) { - var element = $compile('
                  ')($rootScope); + element = $compile('
                  ')($rootScope); $rootScope.hidden = 3; $rootScope.$apply(); @@ -318,7 +277,7 @@ describe('Binder', function() { })); it('HideBinding', inject(function($rootScope, $compile) { - var element = $compile('
                  ')($rootScope); + element = $compile('
                  ')($rootScope); $rootScope.hidden = 'true'; $rootScope.$apply(); @@ -337,7 +296,7 @@ describe('Binder', function() { })); it('ShowBinding', inject(function($rootScope, $compile) { - var element = $compile('
                  ')($rootScope); + element = $compile('
                  ')($rootScope); $rootScope.show = 'true'; $rootScope.$apply(); @@ -357,7 +316,7 @@ describe('Binder', function() { it('BindClass', inject(function($rootScope, $compile) { - var element = $compile('
                  ')($rootScope); + element = $compile('
                  ')($rootScope); $rootScope.clazz = 'testClass'; $rootScope.$apply(); @@ -371,7 +330,7 @@ describe('Binder', function() { })); it('BindClassEvenOdd', inject(function($rootScope, $compile) { - var element = $compile( + element = $compile( '
                  ' + '
                  ' + '
                  ')($rootScope); @@ -387,7 +346,7 @@ describe('Binder', function() { })); it('BindStyle', inject(function($rootScope, $compile) { - var element = $compile('
                  ')($rootScope); + element = $compile('
                  ')($rootScope); $rootScope.$eval('style={height: "10px"}'); $rootScope.$apply(); @@ -413,28 +372,29 @@ describe('Binder', function() { }); it('ShoulIgnoreVbNonBindable', inject(function($rootScope, $compile) { - var element = $compile( - '
                  {{a}}' + - '
                  {{a}}
                  ' + - '
                  {{b}}
                  ' + - '
                  {{c}}
                  ' + - '
                  ')($rootScope); + element = $compile( + "
                  {{a}}" + + "
                  {{a}}
                  " + + "
                  {{b}}
                  " + + "
                  {{c}}
                  " + + "
                  ")($rootScope); $rootScope.a = 123; $rootScope.$apply(); expect(element.text()).toBe('123{{a}}{{b}}{{c}}'); })); it('ShouldTemplateBindPreElements', inject(function ($rootScope, $compile) { - var element = $compile('
                  Hello {{name}}!
                  ')($rootScope); - $rootScope.name = 'World'; + element = $compile('
                  Hello {{name}}!
                  ')($rootScope); + $rootScope.name = "World"; $rootScope.$apply(); - expect( sortedHtml(element)).toBe( - '
                  Hello World!
                  '); + assertEquals( + '
                  Hello World!
                  ', + sortedHtml(element)); })); it('FillInOptionValueWhenMissing', inject(function($rootScope, $compile) { - var element = $compile( + element = $compile( '' + '' + @@ -485,7 +445,7 @@ describe('Binder', function() { $exceptionHandlerProvider.mode('log'); }); inject(function($rootScope, $exceptionHandler, $log, $compile) { - var element = $compile( + element = $compile( '
                  ' + '' + '' + @@ -505,7 +465,7 @@ describe('Binder', function() { }); it('ItShouldSelectTheCorrectRadioBox', inject(function($rootScope, $compile) { - var element = $compile( + element = $compile( '
                  ' + '' + '' + @@ -527,7 +487,7 @@ describe('Binder', function() { })); it('ItShouldRepeatOnHashes', inject(function($rootScope, $compile) { - var element = $compile( + element = $compile( '
                    ' + '
                  • ' + '
                  ')($rootScope); @@ -541,7 +501,7 @@ describe('Binder', function() { })); it('ItShouldFireChangeListenersBeforeUpdate', inject(function($rootScope, $compile) { - var element = $compile('
                  ')($rootScope); + element = $compile('
                  ')($rootScope); $rootScope.name = ''; $rootScope.$watch('watched', 'name=123'); $rootScope.watched = 'change'; @@ -551,7 +511,7 @@ describe('Binder', function() { })); it('ItShouldHandleMultilineBindings', inject(function($rootScope, $compile) { - var element = $compile('
                  {{\n 1 \n + \n 2 \n}}
                  ')($rootScope); + element = $compile('
                  {{\n 1 \n + \n 2 \n}}
                  ')($rootScope); $rootScope.$apply(); expect(element.text()).toBe('3'); })); -- cgit v1.2.3