Skip to content

Commit c440d17

Browse files
committed
Optimize random number
1 parent ffb9f36 commit c440d17

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

src/__tests__/index.test.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@ const { createEvent, createIdentify, getMeta, resetMeta, clone } = require('@pos
22

33
const { processEvent } = require('..')
44

5-
global.fetch = jest.fn(() =>
6-
Promise.resolve({
7-
text: () => Promise.resolve(80805),
8-
})
9-
)
10-
115
beforeEach(() => {
12-
fetch.mockClear()
136
resetMeta({
147
config: {
158
greeting: 'Dzień dobry!',
@@ -29,7 +22,7 @@ test('processEvent adds properties', async () => {
2922
...event0.properties,
3023
greeting: 'Dzień dobry!',
3124
greeting_counter: 0,
32-
random: 80805,
25+
random_number: 4,
3326
},
3427
})
3528

@@ -53,10 +46,15 @@ test('processEvent adds properties', async () => {
5346
})
5447

5548
test('processEvent does not crash with identify', async () => {
49+
const defaultHelloWorldProperties = Object.freeze({
50+
greeting: 'Dzień dobry!',
51+
greeting_counter: 0,
52+
random_number: 4,
53+
})
5654
// create a random event
5755
const event0 = createIdentify()
58-
5956
// must clone the event since `processEvent` will mutate it otherwise
60-
const event1 = await processEvent(clone(event0), getMeta())
61-
expect(event1).toEqual({ ...event0, greeting: 'Dzień dobry!', greeting_counter: 0, random: 80805 })
57+
const { properties, ...restOfEvent1 } = await processEvent(clone(event0), getMeta())
58+
expect(restOfEvent1).toEqual(event0)
59+
expect(properties).toEqual(defaultHelloWorldProperties)
6260
})

src/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import type { RequestInfo, RequestInit, Response } from 'node-fetch'
44
// fetch only declared, as it's provided as a plugin VM global
55
declare function fetch(url: RequestInfo, init?: RequestInit): Promise<Response>
66

7-
// Internal library function
8-
async function fetchTrulyRandomInteger(): Promise<number> {
7+
// Some internal library function
8+
async function getRandomNumber(): Promise<number> {
9+
return 4 // remove this line to get an actual random number from random.org – caution, rate limited to 10 events/s!
910
const response = await fetch(
1011
'https://www.random.org/integers/?num=1&min=1&max=1000000000&col=1&base=10&format=plain&rnd=new'
1112
)
@@ -26,7 +27,7 @@ const helloWorld: Plugin = {
2627
}
2728
event.properties['greeting'] = config.greeting
2829
event.properties['greeting_counter'] = counterValue
29-
event.properties['random'] = await fetchTrulyRandomInteger()
30+
event.properties['random_number'] = await getRandomNumber()
3031
return event
3132
},
3233
}

0 commit comments

Comments
 (0)