aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinigami <[email protected]>2022-11-09 19:47:22 +0100
committerGitHub <[email protected]>2022-11-09 18:47:22 +0000
commitdd58148a2d47de9942c3266a8cdfd8dead32c528 (patch)
tree5fde3c969112856ed3279e2bc38004ee0e7d752a
parent5a09c8968fce19863bb29b99533b05bf1594182b (diff)
downloadfaker-dd58148a2d47de9942c3266a8cdfd8dead32c528.tar.xz
faker-dd58148a2d47de9942c3266a8cdfd8dead32c528.zip
fix(date): don't allow parameters <= 0 (#1536)
-rw-r--r--src/modules/date/index.ts24
-rw-r--r--test/date.spec.ts32
2 files changed, 43 insertions, 13 deletions
diff --git a/src/modules/date/index.ts b/src/modules/date/index.ts
index 111fc4ba..ea9d15d7 100644
--- a/src/modules/date/index.ts
+++ b/src/modules/date/index.ts
@@ -47,10 +47,14 @@ export class DateModule {
* @since 2.0.1
*/
past(years?: number, refDate?: string | Date | number): Date {
+ if (years <= 0) {
+ throw new FakerError('Years must be greater than 0.');
+ }
+
const date = toDate(refDate);
const range = {
min: 1000,
- max: (years || 1) * 365 * 24 * 3600 * 1000,
+ max: (years ?? 1) * 365 * 24 * 3600 * 1000,
};
let past = date.getTime();
@@ -76,10 +80,14 @@ export class DateModule {
* @since 2.0.1
*/
future(years?: number, refDate?: string | Date | number): Date {
+ if (years <= 0) {
+ throw new FakerError('Years must be greater than 0.');
+ }
+
const date = toDate(refDate);
const range = {
min: 1000,
- max: (years || 1) * 365 * 24 * 3600 * 1000,
+ max: (years ?? 1) * 365 * 24 * 3600 * 1000,
};
let future = date.getTime();
@@ -157,10 +165,14 @@ export class DateModule {
* @since 2.0.1
*/
recent(days?: number, refDate?: string | Date | number): Date {
+ if (days <= 0) {
+ throw new FakerError('Days must be greater than 0.');
+ }
+
const date = toDate(refDate);
const range = {
min: 1000,
- max: (days || 1) * 24 * 3600 * 1000,
+ max: (days ?? 1) * 24 * 3600 * 1000,
};
let future = date.getTime();
@@ -186,10 +198,14 @@ export class DateModule {
* @since 5.0.0
*/
soon(days?: number, refDate?: string | Date | number): Date {
+ if (days <= 0) {
+ throw new FakerError('Days must be greater than 0.');
+ }
+
const date = toDate(refDate);
const range = {
min: 1000,
- max: (days || 1) * 24 * 3600 * 1000,
+ max: (days ?? 1) * 24 * 3600 * 1000,
};
let future = date.getTime();
diff --git a/test/date.spec.ts b/test/date.spec.ts
index d5016e2d..365e2cab 100644
--- a/test/date.spec.ts
+++ b/test/date.spec.ts
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, it } from 'vitest';
-import { faker } from '../src';
+import { faker, FakerError } from '../src';
import { seededTests } from './support/seededRuns';
const converterMap = [
@@ -130,11 +130,11 @@ describe('date', () => {
expect(date).greaterThanOrEqual(yearsAgo);
});
- it('should return a past date when years 0', () => {
+ it('should throw an error when years = 0', () => {
const refDate = new Date();
- const date = faker.date.past(0, refDate.toISOString());
-
- expect(date).lessThan(refDate);
+ expect(() => faker.date.past(0, refDate.toISOString())).toThrow(
+ new FakerError('Years must be greater than 0.')
+ );
});
it.each(converterMap)(
@@ -158,11 +158,11 @@ describe('date', () => {
expect(date).greaterThan(new Date());
});
- it('should return a future date when years 0', () => {
+ it('should throw an error when years = 0', () => {
const refDate = new Date();
- const date = faker.date.future(0, refDate.toISOString());
-
- expect(date).greaterThan(refDate); // date should be after the date given
+ expect(() => faker.date.future(0, refDate.toISOString())).toThrow(
+ new FakerError('Years must be greater than 0.')
+ );
});
it.each(converterMap)(
@@ -218,6 +218,13 @@ describe('date', () => {
expect(date).lessThanOrEqual(new Date());
});
+ it('should throw an error when days = 0', () => {
+ const refDate = new Date();
+ expect(() => faker.date.recent(0, refDate.toISOString())).toThrow(
+ new FakerError('Days must be greater than 0.')
+ );
+ });
+
it.each(converterMap)(
'should return a date N days from the recent past, starting from refDate',
(converter) => {
@@ -249,6 +256,13 @@ describe('date', () => {
expect(date).greaterThanOrEqual(new Date());
});
+ it('should throw an error when days = 0', () => {
+ const refDate = new Date();
+ expect(() => faker.date.soon(0, refDate.toISOString())).toThrow(
+ new FakerError('Days must be greater than 0.')
+ );
+ });
+
it.each(converterMap)(
'should return a date N days from the recent future, starting from refDate',
(converter) => {