mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
describe('Settings Controller', function() {
|
|
var rootScope, scope, user, User, ctrl;
|
|
|
|
beforeEach(function() {
|
|
module(function($provide) {
|
|
user = specHelper.newUser();
|
|
User = {
|
|
set: sandbox.stub(),
|
|
user: user
|
|
};
|
|
$provide.value('User', User);
|
|
$provide.value('Guide', sandbox.stub());
|
|
});
|
|
|
|
inject(function(_$rootScope_, _$controller_) {
|
|
scope = _$rootScope_.$new();
|
|
rootScope = _$rootScope_;
|
|
|
|
// Load RootCtrl to ensure shared behaviors are loaded
|
|
_$controller_('RootCtrl', {$scope: scope, User: User});
|
|
|
|
ctrl = _$controller_('SettingsCtrl', {$scope: scope, User: User});
|
|
});
|
|
});
|
|
|
|
describe('#openDayStartModal', function() {
|
|
beforeEach(function() {
|
|
sandbox.stub(rootScope, 'openModal');
|
|
sandbox.stub(window, 'alert');
|
|
});
|
|
|
|
it('opens the day start modal', function() {
|
|
scope.openDayStartModal(5);
|
|
|
|
expect(rootScope.openModal).to.be.calledOnce;
|
|
expect(rootScope.openModal).to.be.calledWith('change-day-start', {scope: scope});
|
|
});
|
|
|
|
it('sets nextCron variable', function() {
|
|
expect(scope.nextCron).to.not.exist;
|
|
|
|
scope.openDayStartModal(5);
|
|
|
|
expect(scope.nextCron).to.exist;
|
|
});
|
|
|
|
it('calculates the next time cron will run', function() {
|
|
var fakeCurrentTime = new Date(2013, 3, 1, 3, 12).getTime();
|
|
var expectedTime = new Date(2013, 3, 1, 5, 0, 0).getTime();
|
|
sandbox.useFakeTimers(fakeCurrentTime);
|
|
|
|
scope.openDayStartModal(5);
|
|
|
|
expect(scope.nextCron).to.eq(expectedTime);
|
|
});
|
|
|
|
it('calculates the next time cron will run and adds a day if cron would have already passed', function() {
|
|
var fakeCurrentTime = new Date(2013, 3, 1, 8, 12).getTime();
|
|
var expectedTime = new Date(2013, 3, 2, 5, 0, 0).getTime();
|
|
sandbox.useFakeTimers(fakeCurrentTime);
|
|
|
|
scope.openDayStartModal(5);
|
|
|
|
expect(scope.nextCron).to.eq(expectedTime);
|
|
});
|
|
});
|
|
|
|
describe('#saveDayStart', function() {
|
|
|
|
it('updates user\'s custom day start and last cron', function() {
|
|
var fakeCurrentTime = new Date(2013, 3, 1, 8, 12).getTime();
|
|
var expectedTime = fakeCurrentTime;
|
|
sandbox.useFakeTimers(fakeCurrentTime);
|
|
scope.dayStart = 5;
|
|
scope.saveDayStart();
|
|
|
|
expect(User.set).to.be.calledOnce;
|
|
expect(User.set).to.be.calledWith({
|
|
'preferences.dayStart': 5,
|
|
'lastCron': expectedTime
|
|
});
|
|
});
|
|
});
|
|
});
|