diff --git a/src/database.ts b/src/database.ts index 3e3b56f95bc..8b80c927808 100644 --- a/src/database.ts +++ b/src/database.ts @@ -59,4 +59,15 @@ export class Database { this.faker.definitions.database.engine ); } + + /** + * Returns a MongoDB [ObjectId](https://docs.mongodb.com/manual/reference/method/ObjectId/) string. + * + * @example + * faker.database.mongodbObjectId() // 'e175cac316a79afdd0ad3afb' + */ + mongodbObjectId(): string { + // strip the "0x" from the hexadecimal output + return this.faker.datatype.hexadecimal(24).replace('0x', '').toLowerCase(); + } } diff --git a/test/database.spec.ts b/test/database.spec.ts index 063f214bfd3..053f91d9f9f 100644 --- a/test/database.spec.ts +++ b/test/database.spec.ts @@ -9,6 +9,7 @@ const seededRuns = [ type: 'smallint', collation: 'utf8_bin', engine: 'MEMORY', + mongodbObjectId: '8be4abdd39321ad7d3fe01ff', }, }, { @@ -18,6 +19,7 @@ const seededRuns = [ type: 'time', collation: 'utf8_general_ci', engine: 'MyISAM', + mongodbObjectId: '5c346ba075bd57f5a62b82d7', }, }, { @@ -27,13 +29,20 @@ const seededRuns = [ type: 'geometry', collation: 'cp1250_general_ci', engine: 'ARCHIVE', + mongodbObjectId: 'eadb42f0e3f4a973fab0aeef', }, }, ]; const NON_SEEDED_BASED_RUN = 5; -const functionNames = ['column', 'type', 'collation', 'engine']; +const functionNames = [ + 'column', + 'type', + 'collation', + 'engine', + 'mongodbObjectId', +]; describe('database', () => { afterEach(() => { @@ -95,6 +104,13 @@ describe('database', () => { expect(faker.definitions.database.type).toContain(type); }); }); + + describe('mongodbObjectId', () => { + it('should generate a MongoDB ObjectId value', () => { + const generateObjectId = faker.database.mongodbObjectId(); + expect(generateObjectId).toBeTypeOf('string'); + }); + }); } }); });