%PDF- %PDF-
Direktori : /www/varak.cloud/jamstash.varak.cloud/app/settings/ |
Current File : /www/varak.cloud/jamstash.varak.cloud/app/settings/settings_test.js |
// jscs:disable validateQuoteMarks describe("Settings controller", function () { 'use strict'; var scope, $rootScope, $controller, $location, $q, controllerParams, utils, persistence, mockGlobals, json, notifications, subsonic, deferred; beforeEach(function () { jasmine.addCustomEqualityTester(angular.equals); module('jamstash.settings.controller'); mockGlobals = { settings: { Password: '', Server: '' } }; // Mock all the services utils = jasmine.createSpyObj("utils", ["HexEncode"]); persistence = jasmine.createSpyObj("persistence", [ "saveQueue", "deleteQueue", "deleteTrackPosition", "saveSettings", "deleteSettings" ]); json = jasmine.createSpyObj("json", ["getChangeLog"]); notifications = jasmine.createSpyObj("notifications", ["requestPermissionIfRequired", "isSupported", "updateMessage"]); inject(function (_$controller_, _$rootScope_, _$location_, _$q_) { $rootScope = _$rootScope_; scope = $rootScope.$new(); $location = _$location_; $q = _$q_; deferred = $q.defer(); $rootScope.hideQueue = jasmine.createSpy("hideQueue"); $rootScope.loadSettings = jasmine.createSpy("loadSettings"); // Mock subsonic-service using $q subsonic = jasmine.createSpyObj("subsonic", ["ping"]); $controller = _$controller_; controllerParams = { $rootScope: $rootScope, $scope: scope, $location: $location, utils: utils, globals: mockGlobals, json: json, notifications: notifications, persistence: persistence, subsonic: subsonic }; }); }); describe("", function () { beforeEach(function () { $controller('SettingsController', controllerParams); }); describe("save() -", function () { it("Given the settings have been set, when I save them, then the settings will be saved using the persistence service and the user will be notified", function () { scope.save(); expect(persistence.saveSettings).toHaveBeenCalledWith(scope.settings); expect(notifications.updateMessage).toHaveBeenCalledWith('Settings Updated!', true); }); it("Given that the SaveTrackPosition setting was true, when I save the settings, then the current queue will be saved using the persistence service", function () { scope.settings.SaveTrackPosition = true; scope.save(); expect(persistence.saveQueue).toHaveBeenCalled(); }); it("Given that the SaveTrackPosition setting was false, when I save the settings, then the saved queue and track will be deleted from the persistence service", function () { scope.settings.SaveTrackPosition = false; scope.save(); expect(persistence.deleteTrackPosition).toHaveBeenCalled(); expect(persistence.deleteQueue).toHaveBeenCalled(); }); it("Given that the Server, Username and Password settings weren't empty, when I save the settings, then subsonic service will be pinged", function () { scope.settings.Server = 'http://hexagram.com/malacobdella/liposis?a=platybasic&b=enantiopathia#stratoplane'; scope.settings.Username = 'Mollura'; scope.settings.Password = 'FPTVjZtBwEyq'; subsonic.ping.and.returnValue(deferred.promise); scope.save(); expect(subsonic.ping).toHaveBeenCalled(); }); it("Given the server and Jamstash had different api versions, when I save the settings and the server responds an error, then the ApiVersion setting will be updated with the one sent from the server", function () { scope.settings.Server = 'http://gallotannate.com/tetranychus/puzzlement?a=stoically&b=mantuamaker#marianolatrist'; scope.settings.Username = 'Vandervelden'; scope.settings.Password = 'PA3DhdfAu0dy'; scope.ApiVersion = '1.10.2'; subsonic.ping.and.returnValue(deferred.promise); scope.save(); deferred.reject({ reason: 'Error when contacting the Subsonic server.', subsonicError: { code: 30, message: 'Incompatible Subsonic REST protocol version. Server must upgrade.' }, version: '1.8.0' }); scope.$apply(); expect(mockGlobals.settings.ApiVersion).toEqual('1.8.0'); }); }); it("reset() - When I reset the settings, they will be deleted from the persistence service and will be reloaded with default values", function () { scope.reset(); expect(persistence.deleteSettings).toHaveBeenCalled(); expect(scope.loadSettings).toHaveBeenCalled(); }); }); describe("On startup", function () { }); });