From feca2871ebb5a31049f1b843821c03a66ca8fc8a Mon Sep 17 00:00:00 2001 From: bergquist Date: Tue, 12 Jan 2016 11:57:16 +0100 Subject: [PATCH] tests(playlist): adds ctrl test for playlist edit --- .../features/playlist/playlist_edit_ctrl.js | 29 ++++--- .../specs/playlist-edit-ctrl-specs.ts | 86 +++++++++++++++++++ 2 files changed, 102 insertions(+), 13 deletions(-) create mode 100644 public/app/features/playlist/specs/playlist-edit-ctrl-specs.ts diff --git a/public/app/features/playlist/playlist_edit_ctrl.js b/public/app/features/playlist/playlist_edit_ctrl.js index 38e6bd13156..74d62c4c8dd 100644 --- a/public/app/features/playlist/playlist_edit_ctrl.js +++ b/public/app/features/playlist/playlist_edit_ctrl.js @@ -9,7 +9,6 @@ function (angular, config, _) { var module = angular.module('grafana.controllers'); module.controller('PlaylistEditCtrl', function($scope, playlistSrv, backendSrv, $location, $route) { - $scope.timespan = config.playlist_timespan; $scope.filteredPlaylistItems = []; $scope.foundPlaylistItems = []; $scope.searchQuery = ''; @@ -17,19 +16,23 @@ function (angular, config, _) { $scope.playlist = {}; $scope.playlistItems = []; - if ($route.current.params.id) { - var playlistId = $route.current.params.id; + $scope.init = function() { + if ($route.current.params.id) { + var playlistId = $route.current.params.id; - backendSrv.get('/api/playlists/' + playlistId) - .then(function(result) { - $scope.playlist = result; - }); + backendSrv.get('/api/playlists/' + playlistId) + .then(function(result) { + $scope.playlist = result; + }); - backendSrv.get('/api/playlists/' + playlistId + '/playlistitems') - .then(function(result) { - $scope.playlistItems = result; - }); - } + backendSrv.get('/api/playlists/' + playlistId + '/playlistitems') + .then(function(result) { + $scope.playlistItems = result; + }); + } + + $scope.search(); + }; $scope.search = function() { var query = {starred: true, limit: 10}; @@ -136,6 +139,6 @@ function (angular, config, _) { $scope.moveDashboard(playlistItem, 1); }; - $scope.search(); + $scope.init(); }); }); diff --git a/public/app/features/playlist/specs/playlist-edit-ctrl-specs.ts b/public/app/features/playlist/specs/playlist-edit-ctrl-specs.ts new file mode 100644 index 00000000000..4ec86feda6e --- /dev/null +++ b/public/app/features/playlist/specs/playlist-edit-ctrl-specs.ts @@ -0,0 +1,86 @@ +import '../playlist_edit_ctrl'; +import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/common'; +import helpers from 'test/specs/helpers'; + +describe('PlaylistEditCtrl', function() { + var ctx = new helpers.ControllerTestContext(); + + var dashboards = [ + { + id: 2, + title: 'dashboard: 2' + }, + { + id: 3, + title: 'dashboard: 3' + } + ]; + + var playlistSrv = {}; + var backendSrv = { + search: (query) => { + return ctx.$q.when(dashboards); + } + }; + + beforeEach(angularMocks.module('grafana.core')); + beforeEach(angularMocks.module('grafana.controllers')); + beforeEach(angularMocks.module('grafana.services')); + beforeEach(ctx.providePhase({ + playlistSrv: playlistSrv, + backendSrv: backendSrv, + $route: { current: { params: { } } }, + })); + + beforeEach(ctx.createControllerPhase('PlaylistEditCtrl')); + + beforeEach(() => { + ctx.scope.$digest(); + }); + + describe.only('searchresult returns 2 dashboards', function() { + it('found dashboard should be 2', function() { + expect(ctx.scope.foundPlaylistItems.length).to.be(2); + }); + + it('filtred dashboard should be 2', function() { + expect(ctx.scope.filteredPlaylistItems.length).to.be(2); + }); + + describe('adds one dashboard to playlist', () => { + beforeEach(() => { + ctx.scope.addPlaylistItem({ id: 2, title: 'dashboard: 2' }); + }); + + it('playlistitems should be increased by one', () => { + expect(ctx.scope.playlistItems.length).to.be(1); + }); + + it('filtred playlistitems should be reduced by one', () => { + expect(ctx.scope.filteredPlaylistItems.length).to.be(1); + }); + + it('found dashboard should be 2', function() { + expect(ctx.scope.foundPlaylistItems.length).to.be(2); + }); + + describe('removes one dashboard from playlist', () => { + beforeEach(() => { + ctx.scope.removePlaylistItem(ctx.scope.playlistItems[0]); + }); + + it('playlistitems should be increased by one', () => { + expect(ctx.scope.playlistItems.length).to.be(0); + }); + + it('found dashboard should be 2', function() { + expect(ctx.scope.foundPlaylistItems.length).to.be(2); + }); + + it('filtred playlist should be reduced by one', () => { + expect(ctx.scope.filteredPlaylistItems.length).to.be(2); + }); + }); + }); + }); +}); \ No newline at end of file