mirror of
https://github.com/hexastack/hexabot
synced 2025-06-26 18:27:28 +00:00
feat: envelope factory
This commit is contained in:
30
api/src/utils/helpers/safeRandom.spec.ts
Normal file
30
api/src/utils/helpers/safeRandom.spec.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright © 2025 Hexastack. All rights reserved.
|
||||
*
|
||||
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
|
||||
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
|
||||
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
|
||||
*/
|
||||
|
||||
import { getRandomElement } from './safeRandom';
|
||||
|
||||
describe('safeRandom', () => {
|
||||
describe('getRandomElement', () => {
|
||||
it('should get a random message', () => {
|
||||
const messages = [
|
||||
'Hello, this is Nour',
|
||||
'Oh ! How are you ?',
|
||||
"Hmmm that's cool !",
|
||||
'Corona virus',
|
||||
'God bless you',
|
||||
];
|
||||
const result = getRandomElement(messages);
|
||||
expect(messages).toContain(result);
|
||||
});
|
||||
|
||||
it('should return undefined when trying to get a random message from an empty array', () => {
|
||||
const result = getRandomElement([]);
|
||||
expect(result).toBe(undefined);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright © 2024 Hexastack. All rights reserved.
|
||||
* Copyright © 2025 Hexastack. All rights reserved.
|
||||
*
|
||||
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
|
||||
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
|
||||
@@ -15,3 +15,16 @@ import crypto from 'crypto';
|
||||
*/
|
||||
export const getRandom = (): number =>
|
||||
crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32;
|
||||
|
||||
/**
|
||||
* Return a randomly picked item of the array
|
||||
*
|
||||
* @param array - Array of any type
|
||||
*
|
||||
* @returns A random item from the array
|
||||
*/
|
||||
export const getRandomElement = <T>(array: T[]): T => {
|
||||
return Array.isArray(array)
|
||||
? array[Math.floor(getRandom() * array.length)]
|
||||
: array;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user