From 9e890265fa691221892cf9b57f980f96478ddb71 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Tue, 8 Apr 2014 16:43:02 +0100 Subject: [PATCH] WIP: More spec stuff. --- assets/js/controllers/transport.controller.js | 8 ++--- .../controllers/queue.controller.spec.js | 1 + .../controllers/transport.controller.spec.js | 32 +++++++++++++++++++ spec/javascripts/mocks/api.mock.js | 25 +++++++++++++++ 4 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 spec/javascripts/controllers/transport.controller.spec.js diff --git a/assets/js/controllers/transport.controller.js b/assets/js/controllers/transport.controller.js index 92ac2d6..fbccd35 100644 --- a/assets/js/controllers/transport.controller.js +++ b/assets/js/controllers/transport.controller.js @@ -1,10 +1,6 @@ mpdClient.controller('transport', function ($scope, api, serverEvents) { $scope.status = {} - api.getStatus().success(function (data, status, headers, config) { - $scope.updateStatus(data) - }) - $scope.updateStatus = function(data) { $scope.status = data if (data.time) { $scope.updateTime(data.time) } @@ -29,6 +25,10 @@ mpdClient.controller('transport', function ($scope, api, serverEvents) { return ($scope.elapsedTime / $scope.totalTime) * 100 } + api.getStatus().success(function (data, status, headers, config) { + $scope.updateStatus(data) + }) + $scope.$on('update:status', function (evt, data) { $scope.updateStatus(data) }) $scope.$on('update:time', function (evt, data) { $scope.updateTime(data) }) }) diff --git a/spec/javascripts/controllers/queue.controller.spec.js b/spec/javascripts/controllers/queue.controller.spec.js index e17202a..34d8fef 100644 --- a/spec/javascripts/controllers/queue.controller.spec.js +++ b/spec/javascripts/controllers/queue.controller.spec.js @@ -16,6 +16,7 @@ describe('queue controller', function() { it('sets the currently playing song', function () { scope.updatePlaying(scope.queueSongs[1].id) expect(scope.queueSongs[0].playing).toBe(false) + expect(scope.queueSongs[1].playing).toBe(true) }) }); diff --git a/spec/javascripts/controllers/transport.controller.spec.js b/spec/javascripts/controllers/transport.controller.spec.js new file mode 100644 index 0000000..30378d5 --- /dev/null +++ b/spec/javascripts/controllers/transport.controller.spec.js @@ -0,0 +1,32 @@ +describe('transport controller', function() { + + var TransportController, scope + + beforeEach(module('mpdClient')) + + beforeEach(inject(function ($controller, $rootScope) { + scope = $rootScope.$new() + TransportController = $controller('transport', { $scope: scope, api: mockApi }) + })) + + it('gets the status from the API', function () { + expect(scope.status.volume).toBe(100) + }) + + it('gets the playing status', function () { + expect(scope.playing()).toBe(true) + status = scope.status + status.state = 'stop' + scope.updateStatus(status) + expect(scope.playing()).toBe(false) + }) + + it('gets the stopped status', function () { + expect(scope.stopped()).toBe(false) + }) + + it('reports the correct marker position', function () { + expect(scope.markerPosition()).toBe(50) + }) + +}); diff --git a/spec/javascripts/mocks/api.mock.js b/spec/javascripts/mocks/api.mock.js index 5de6b2b..55ac559 100644 --- a/spec/javascripts/mocks/api.mock.js +++ b/spec/javascripts/mocks/api.mock.js @@ -22,5 +22,30 @@ var mockApi = { ] } } + }, + + getStatus: function () { + return { + success: function (callback) { + callback({ + "volume": 100, + "repeat": true, + "random": false, + "single": false, + "consume": false, + "playlist": 237, + "playlistlength": 15, + "xfade": 0, + "mixrampdb": 0, + "mixrampdelay": 0, + "state": "play", + "time": [80, 160], + "song": 8, + "songid": 124, + "nextsong": 9, + "nextsongid": 125 + }, null, {}, {}) + } + } } }