'use strict';

var expect = require('expect.js');
var sinon = require('sinon');
var cron = require('../src/node-cron');

describe('scheduling with timezone', () => {
    beforeEach(() =>{
        this.clock = sinon.useFakeTimers();
    });
    
    afterEach(() =>{
        this.clock.restore();
    });
    
    it('should schedule a task without timezone', () => {
        var executed = 0;
        cron.schedule('0 0 * * *', () => {
            executed++;
        });
        
        this.clock.tick(1000 * 60 * 60 * 24);
        expect(executed).to.equal(1);
    });
    
    it('should schedule a task with timezone', () => {
        var executedAt;
        cron.schedule('0 0 * * *', () => {
            executedAt = new Date();
        }, {
            timezone: 'Etc/UTC'
        });
        
        this.clock.tick(1000 * 60 * 60 * 24 + 1);
        expect(executedAt.getHours()).to.equal(21);
    });
});