import { expect } from 'chai';
import sinon from 'sinon';
import { getDurationTillNextDay } from './am';

describe('am', () => {
  let clock: sinon.SinonFakeTimers;
  before(() => {
    clock = sinon.useFakeTimers();
  });
  after(() => {
    clock.restore();
  });

  it('tests getDurationTillNextDay', async () => {
    // Set fake clock to 1999 Jan 1st Friday 9 AM.
    clock = sinon.useFakeTimers(new Date(1999, 0, 1, 9, 0, 0));
    // Friday to Monday.
    expect(getDurationTillNextDay(1, 9)).to.equal('3d');
    // Friday to Thursday.
    expect(getDurationTillNextDay(4, 8)).to.equal('6d');
    // Friday to Friday same time.
    expect(getDurationTillNextDay(5, 9)).to.equal('1w');
    // Friday to Friday one hour later.
    expect(getDurationTillNextDay(5, 10)).to.equal('1w');
    // Friday to Friday one hour earlier.
    expect(getDurationTillNextDay(5, 8)).to.equal('1w');

    // Set fake clock to 1999 Dec 31st Friday 9 AM.
    clock = sinon.useFakeTimers(new Date(1999, 11, 31, 9, 0, 0));
    // Friday to Saturday.
    expect(getDurationTillNextDay(6, 9)).to.equal('1d');
    // Friday to Sunday.
    expect(getDurationTillNextDay(0, 9)).to.equal('2d');
    // Friday to Friday.
    expect(getDurationTillNextDay(5, 9)).to.equal('1w');
  });
});
