/**
 * Module dependencies.
 */

var assert = require('assert');
const { weekdayRange } = require('../').sandbox;
var vanillaGetUTCDay = Date.prototype.getUTCDay;
var vanillaGetDay = Date.prototype.getDay;

describe('hooks', function () {
	before(function () {
		Date.prototype.getDay = function () {
			return 6;
		}; // Setting local weekday as SAT(6)
		Date.prototype.getUTCDay = function () {
			return 5;
		}; // Setting UTC weekday as FRI(5)
	});

	after(function () {
		Date.prototype.getUTCDay = vanillaGetUTCDay;
		Date.prototype.getDay = vanillaGetDay;
	});

	describe('weekdayRange(wd1, wd2, gmt)', function () {
		var tests = [
			['MON', 'FRI', false],
			['MON', 'FRI', 'GMT', true],
			['SAT', true],
			['SAT', 'GMT', false],
			['FRI', 'MON', true],
			['SAT', 'MON', 'GMT', false],
			['SOME', 'RANDOM', false],
			['RANDOM', false],
			['RANDOM', 'VALUE', 'IST', false],
		];

		tests.forEach(function (test) {
			var expected = test.pop();
			it(
				'should return `' +
					expected +
					'` for "' +
					test.join('", "') +
					'"',
				function () {
					assert.equal(
						expected,
						weekdayRange(test[0], test[1], test[2])
					);
				}
			);
		});
	});
});
