From 64fff6761eb17391f118ab5b8d11c4e5db821f5a Mon Sep 17 00:00:00 2001 From: Tasos Bekos Date: Sat, 29 Jun 2013 12:11:51 +0300 Subject: [PATCH] refactor(rating): add helpers to access stars in tests --- src/rating/test/rating.spec.js | 102 +++++++++++++++------------------ 1 file changed, 46 insertions(+), 56 deletions(-) diff --git a/src/rating/test/rating.spec.js b/src/rating/test/rating.spec.js index 614ef0a497..9a9e368db4 100644 --- a/src/rating/test/rating.spec.js +++ b/src/rating/test/rating.spec.js @@ -10,7 +10,16 @@ describe('rating directive', function () { $rootScope.$digest(); })); - function getState(stars) { + function getStars() { + return element.find('i'); + } + + function getStar(number) { + return getStars().eq( number - 1 ); + } + + function getState() { + var stars = getStars(); var state = []; for (var i = 0, n = stars.length; i < n; i++) { state.push( (stars.eq(i).hasClass('icon-star') && ! stars.eq(i).hasClass('icon-star-empty')) ); @@ -19,47 +28,38 @@ describe('rating directive', function () { } it('contains the default number of icons', function() { - expect(element.find('i').length).toBe(5); + expect(getStars().length).toBe(5); }); it('initializes the default star icons as selected', function() { - var stars = element.find('i'); - expect(getState(stars)).toEqual([true, true, true, false, false]); + expect(getState()).toEqual([true, true, true, false, false]); }); it('handles correctly the click event', function() { - var stars = element.find('i'); - - var star2 = stars.eq(1); - star2.click(); + getStar(2).click(); $rootScope.$digest(); - expect(getState(stars)).toEqual([true, true, false, false, false]); + expect(getState()).toEqual([true, true, false, false, false]); expect($rootScope.rate).toBe(2); - var star5 = stars.eq(4); - star5.click(); + getStar(5).click(); $rootScope.$digest(); - expect(getState(stars)).toEqual([true, true, true, true, true]); + expect(getState()).toEqual([true, true, true, true, true]); expect($rootScope.rate).toBe(5); }); it('handles correctly the hover event', function() { - var stars = element.find('i'); - - var star2 = stars.eq(1); - star2.trigger('mouseover'); + getStar(2).trigger('mouseover'); $rootScope.$digest(); - expect(getState(stars)).toEqual([true, true, false, false, false]); + expect(getState()).toEqual([true, true, false, false, false]); expect($rootScope.rate).toBe(3); - var star5 = stars.eq(4); - star5.trigger('mouseover'); + getStar(5).trigger('mouseover'); $rootScope.$digest(); - expect(getState(stars)).toEqual([true, true, true, true, true]); + expect(getState()).toEqual([true, true, true, true, true]); expect($rootScope.rate).toBe(3); element.trigger('mouseout'); - expect(getState(stars)).toEqual([true, true, true, false, false]); + expect(getState()).toEqual([true, true, true, false, false]); expect($rootScope.rate).toBe(3); }); @@ -67,15 +67,14 @@ describe('rating directive', function () { $rootScope.rate = 2; $rootScope.$digest(); - var stars = element.find('i'); - expect(getState(stars)).toEqual([true, true, false, false, false]); + expect(getState()).toEqual([true, true, false, false, false]); }); it('shows different number of icons when `max` attribute is set', function() { element = $compile('')($rootScope); $rootScope.$digest(); - expect(element.find('i').length).toBe(7); + expect(getStars().length).toBe(7); }); it('handles readonly attribute', function() { @@ -83,37 +82,33 @@ describe('rating directive', function () { element = $compile('')($rootScope); $rootScope.$digest(); - var stars = element.find('i'); - expect(getState(stars)).toEqual([true, true, true, false, false]); + expect(getState()).toEqual([true, true, true, false, false]); - var star5 = stars.eq(4); + var star5 = getStar(5); star5.trigger('mouseover'); $rootScope.$digest(); - expect(getState(stars)).toEqual([true, true, true, false, false]); + expect(getState()).toEqual([true, true, true, false, false]); $rootScope.isReadonly = false; $rootScope.$digest(); star5.trigger('mouseover'); $rootScope.$digest(); - expect(getState(stars)).toEqual([true, true, true, true, true]); + expect(getState()).toEqual([true, true, true, true, true]); }); it('should fire onHover', function() { $rootScope.hoveringOver = jasmine.createSpy('hoveringOver'); - element = $compile('')($rootScope); $rootScope.$digest(); - var star3 = element.find('i').eq(2); - star3.trigger('mouseover'); + getStar(3).trigger('mouseover'); $rootScope.$digest(); expect($rootScope.hoveringOver).toHaveBeenCalledWith(3); }); it('should fire onLeave', function() { $rootScope.leaving = jasmine.createSpy('leaving'); - element = $compile('')($rootScope); $rootScope.$digest(); @@ -121,28 +116,23 @@ describe('rating directive', function () { $rootScope.$digest(); expect($rootScope.leaving).toHaveBeenCalled(); }); -}); -describe('setting ratingConfig', function() { - var $rootScope, element; - var originalConfig = {}; - beforeEach(module('ui.bootstrap.rating')); - beforeEach(module('template/rating/rating.html')); - beforeEach(inject(function(_$compile_, _$rootScope_, ratingConfig) { - $compile = _$compile_; - $rootScope = _$rootScope_; - $rootScope.rate = 5; - angular.extend(originalConfig, ratingConfig); - ratingConfig.max = 10; - element = $compile('')($rootScope); - $rootScope.$digest(); - })); - afterEach(inject(function(ratingConfig) { - // return it to the original state - angular.extend(ratingConfig, originalConfig); - })); - - it('should change number of icon elements', function () { - expect(element.find('i').length).toBe(10); + describe('setting ratingConfig', function() { + var originalConfig = {}; + beforeEach(inject(function(ratingConfig) { + $rootScope.rate = 5; + angular.extend(originalConfig, ratingConfig); + ratingConfig.max = 10; + element = $compile('')($rootScope); + $rootScope.$digest(); + })); + afterEach(inject(function(ratingConfig) { + // return it to the original state + angular.extend(ratingConfig, originalConfig); + })); + + it('should change number of icon elements', function () { + expect(getStars().length).toBe(10); + }); }); -}); \ No newline at end of file +});