diff options
6 files changed, 98 insertions, 10 deletions
diff --git a/plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js b/plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js index a052482ce6..a78154b49a 100644 --- a/plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js +++ b/plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js @@ -30,7 +30,8 @@ angular.module('piwikApp.directive').directive('piwikAutocompleteMatched', funct } var content = element.html(); - var startTerm = content.toLowerCase().indexOf(searchTerm); + var startTerm = content.toLowerCase().indexOf(searchTerm.toLowerCase()); + if (-1 !== startTerm) { var word = content.substr(startTerm, searchTerm.length); content = content.replace(word, '<span class="autocompleteMatched">' + word + '</span>'); diff --git a/plugins/CoreHome/angularjs/common/directives/autocomplete-matched_test.js b/plugins/CoreHome/angularjs/common/directives/autocomplete-matched_test.js new file mode 100644 index 0000000000..2518687b97 --- /dev/null +++ b/plugins/CoreHome/angularjs/common/directives/autocomplete-matched_test.js @@ -0,0 +1,43 @@ +/*! + * Piwik - Web Analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +describe('piwikAutocompleteMatchedDirective', function() { + var $compile; + var $rootScope; + + beforeEach(module('piwikApp.directive')); + beforeEach(inject(function(_$compile_, _$rootScope_){ + $compile = _$compile_; + $rootScope = _$rootScope_; + })); + + function assertRenderedContentIs(query, expectedResult) { + var template = '<div piwik-autocomplete-matched="\'' + query + '\'">My Content</div>'; + var element = $compile(template)($rootScope); + $rootScope.$digest(); + expect(element.html()).to.eql(expectedResult); + } + + describe('#piwikAutocompleteMatched()', function() { + + it('should not change anything if query does not match the text', function() { + assertRenderedContentIs('Whatever', 'My Content'); + }); + + it('should wrap the matching part and find case insensitive', function() { + assertRenderedContentIs('y cont', 'M<span class="autocompleteMatched">y Cont</span>ent'); + }); + + it('should be able to wrap the whole content', function() { + assertRenderedContentIs('my content', '<span class="autocompleteMatched">My Content</span>'); + }); + + it('should find matching content case sensitive', function() { + assertRenderedContentIs('My Co', '<span class="autocompleteMatched">My Co</span>ntent'); + }); + }); +});
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/common/filters/startfrom_test.js b/plugins/CoreHome/angularjs/common/filters/startfrom_test.js index cd12279c39..d18c99e781 100644 --- a/plugins/CoreHome/angularjs/common/filters/startfrom_test.js +++ b/plugins/CoreHome/angularjs/common/filters/startfrom_test.js @@ -5,18 +5,16 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -describe('startFromFilter filter', function() { +describe('startFromFilter', function() { var startFrom; - beforeEach(function() { - module('piwikApp.filter'); - inject(function($injector) { - var $filter = $injector.get('$filter'); - startFrom = $filter('startFrom'); - }); - }); + beforeEach(module('piwikApp.filter')); + beforeEach(inject(function($injector) { + var $filter = $injector.get('$filter'); + startFrom = $filter('startFrom'); + })); - describe('startFrom', function() { + describe('#startFrom()', function() { it('should return all entries if index is zero', function() { diff --git a/plugins/CoreHome/angularjs/common/services/piwik_test.js b/plugins/CoreHome/angularjs/common/services/piwik_test.js new file mode 100644 index 0000000000..7aa4ef4eb1 --- /dev/null +++ b/plugins/CoreHome/angularjs/common/services/piwik_test.js @@ -0,0 +1,37 @@ +/*! + * Piwik - Web Analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +describe('piwikService', function() { + var piwikService; + + beforeEach(module('piwikApp.service')); + beforeEach(inject(function($injector) { + piwikService = $injector.get('piwik'); + })); + + describe('#piwikService', function() { + + it('should be the same as piwik global var', function() { + piwik.should.equal(piwikService); + }); + + it('should mixin broadcast', function() { + expect(piwikService.broadcast).to.be.an('object'); + }); + + it('should mixin piwikHelper', function() { + expect(piwikService.helper).to.be.an('object'); + }); + }); + + describe('#piwik_url', function() { + + it('should contain the piwik url', function() { + expect(piwikService.piwik_url).to.eql('http://localhost/'); + }); + }); +});
\ No newline at end of file diff --git a/tests/angularjs/README.md b/tests/angularjs/README.md index fd8465c4b7..440cc39f5e 100644 --- a/tests/angularjs/README.md +++ b/tests/angularjs/README.md @@ -43,4 +43,6 @@ Just in case you want to write a test for your jQuery code you can do this the s ## Examples * [Testing a filter](plugins/CoreHome/angularjs/common/filters/startfrom_test.js) +* [Testing a directive](plugins/CoreHome/angularjs/common/directives/autocomplete-matched_test.js) +* [Testing a service/provider/factory/model](plugins/CoreHome/angularjs/common/services/piwik_test.js) * See more examples in [AngularJS guide](http://docs.angularjs.org/guide/unit-testing) diff --git a/tests/angularjs/karma.conf.js b/tests/angularjs/karma.conf.js index 228379cc62..a5b3f7943a 100755 --- a/tests/angularjs/karma.conf.js +++ b/tests/angularjs/karma.conf.js @@ -18,8 +18,15 @@ module.exports = function(config) { 'tests/angularjs/node_modules/chai/chai.js', 'tests/angularjs/bootstrap.js', 'libs/angularjs/angular.min.js', + "libs/angularjs/angular-sanitize.min.js", + "libs/angularjs/angular-animate.min.js", 'libs/angularjs/angular-mocks.js', 'libs/jquery/jquery.js', + "libs/jquery/jquery-ui.js", + "plugins/CoreHome/javascripts/require.js", + "plugins/Zeitgeist/javascripts/piwikHelper.js", + "plugins/Zeitgeist/javascripts/ajaxHelper.js", + "plugins/CoreHome/javascripts/broadcast.js", 'plugins/CoreHome/angularjs/common/services/service.js', 'plugins/CoreHome/angularjs/common/filters/filter.js', 'plugins/CoreHome/angularjs/common/directives/directive.js', |