piskel/test/js/service/pensize/PenSizeServiceTest.js

74 lines
2.1 KiB
JavaScript

describe("PenSize test suite", function() {
var penSizeService;
var userSettingsBackup;
var userSettingsPenSize;
beforeEach(function() {
userSettingsBackup = pskl.UserSettings;
pskl.UserSettings = {
PEN_SIZE : 'PEN_SIZE_TEST_KEY',
get : function () {
return userSettingsPenSize;
},
set : function (size) {
userSettingsPenSize = size;
}
};
spyOn(pskl.UserSettings, 'get').and.callThrough();
spyOn(pskl.UserSettings, 'set').and.callThrough();
spyOn($, 'publish').and.callThrough();
penSizeService = new pskl.service.pensize.PenSizeService();
});
afterEach(function () {
pskl.UserSettings = userSettingsBackup;
});
it("gets initial value from user settings", function() {
console.log('[PenSizeService] gets initial value from user settings');
userSettingsPenSize = 2;
penSizeService.init();
expect(penSizeService.getPenSize()).toBe(2);
expect(pskl.UserSettings.get).toHaveBeenCalledWith('PEN_SIZE_TEST_KEY');
});
it("saves valid value to user settings", function() {
console.log('[PenSizeService] saves valid value to user settings');
userSettingsPenSize = 1;
penSizeService.init();
penSizeService.setPenSize(3);
expect(penSizeService.getPenSize()).toBe(3);
expect(pskl.UserSettings.set).toHaveBeenCalledWith('PEN_SIZE_TEST_KEY', 3);
expect($.publish).toHaveBeenCalledWith(Events.PEN_SIZE_CHANGED);
});
it("skips invalid value (outside of [1, 4])", function() {
console.log('[PenSizeService] skips invalid value (outside of [1, 32])');
userSettingsPenSize = 1;
penSizeService.init();
// MAX_VALUE is 32
penSizeService.setPenSize(33);
expect(penSizeService.getPenSize()).toBe(1);
// MIN_VALUE is 1
penSizeService.setPenSize(0);
expect(penSizeService.getPenSize()).toBe(1);
// value should be a number
penSizeService.setPenSize("test");
expect(penSizeService.getPenSize()).toBe(1);
// nothing set in usersettings
expect(pskl.UserSettings.set.calls.any()).toBe(false);
// no event fired
expect($.publish.calls.any()).toBe(false);
});
});