diff options
Diffstat (limited to 'test/widgetsSpec.js')
| -rw-r--r-- | test/widgetsSpec.js | 51 | 
1 files changed, 50 insertions, 1 deletions
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js index 342dc8c5..422ca86b 100644 --- a/test/widgetsSpec.js +++ b/test/widgetsSpec.js @@ -611,7 +611,7 @@ describe("widget", function(){      it('should throw when not formated "? for ? in ?"', function(){        expect(function(){          compile('<select name="selected" ng:options="i dont parse"></select>'); -      }).toThrow("Expected ng:options in form of '(_expression_ as)? _expresion_ for _item_ in _collection_' but got 'i dont parse'."); +      }).toThrow("Expected ng:options in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got 'i dont parse'.");        $logMock.error.logs.shift();      }); @@ -628,6 +628,27 @@ describe("widget", function(){        expect(sortedHtml(options[2])).toEqual('<option value="2">C</option>');      }); +    it('should render an object', function(){ +      createSelect({ +        name:'selected', +        'ng:options': 'value as key for (key, value) in object' +      }); +      scope.object = {'red':'FF0000', 'green':'00FF00', 'blue':'0000FF'}; +      scope.selected = scope.object.red; +      scope.$eval(); +      var options = select.find('option'); +      expect(options.length).toEqual(3); +      expect(sortedHtml(options[0])).toEqual('<option value="0">blue</option>'); +      expect(sortedHtml(options[1])).toEqual('<option value="1">green</option>'); +      expect(sortedHtml(options[2])).toEqual('<option value="2">red</option>'); +      expect(options[2].selected).toEqual(true); + +      scope.object.azur = '8888FF'; +      scope.$eval(); +      options = select.find('option'); +      expect(options[3].selected).toEqual(true); +    }); +      it('should grow list', function(){        createSingleSelect();        scope.values = []; @@ -751,6 +772,34 @@ describe("widget", function(){          expect(select.val()).toEqual('1');        }); +      it('should bind to object key', function(){ +        createSelect({ +          name:'selected', +          'ng:options':'key as value for (key, value) in object'}); +        scope.object = {'red':'FF0000', 'green':'00FF00', 'blue':'0000FF'}; +        scope.selected = 'green'; +        scope.$eval(); +        expect(select.val()).toEqual('1'); + +        scope.selected = 'blue'; +        scope.$eval(); +        expect(select.val()).toEqual('0'); +      }); + +      it('should bind to object value', function(){ +        createSelect({ +          name:'selected', +          'ng:options':'value as key for (key, value) in object'}); +        scope.object = {'red':'FF0000', 'green':'00FF00', 'blue':'0000FF'}; +        scope.selected = '00FF00'; +        scope.$eval(); +        expect(select.val()).toEqual('1'); + +        scope.selected = '0000FF'; +        scope.$eval(); +        expect(select.val()).toEqual('0'); +      }); +        it('should insert a blank option if bound to null', function(){          createSingleSelect();          scope.values = [{name:'A'}];  | 
