Skip to content

Commit 00be4b0

Browse files
committed
allow emit msgs with custom events
1 parent fc05c72 commit 00be4b0

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

README.md

+7-2
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ const message = simulator.generateEvents(numberOfDataPoints);
8787
To send a single message to the server, call the `sendSingleMessage` method:
8888

8989
```ts
90-
const { res, msg } = await simulator.sendSingleMessage();
90+
const eventType = "TEMPERATURE";
91+
92+
const { res, msg } = await simulator.sendSingleMessage(eventType);
9193

9294
console.log("response: ", res?.data);
9395
console.log("w3bstream message: ", msg);
@@ -96,7 +98,10 @@ console.log("w3bstream message: ", msg);
9698
To send messages at a specified interval, use the `powerOn` method:
9799

98100
```ts
99-
simulator.powerOn(intervalInSec);
101+
const intervalInSec = 1;
102+
const eventType = "TEMPERATURE";
103+
104+
simulator.powerOn(intervalInSec, eventType);
100105
```
101106

102107
To stop sending messages, call the `powerOff` method:

src/Simulator/index.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ export class Simulator {
3838
};
3939
}
4040

41-
powerOn(intervalInSec: number): void {
41+
powerOn(intervalInSec: number, eventType?: string): void {
4242
const intervalInMs = intervalInSec * 1000;
4343

4444
this._interval = setInterval(async () => {
4545
try {
46-
await this.sendSingleMessage();
46+
await this.sendSingleMessage(eventType);
4747
} catch (e) {
4848
console.log(e);
4949
console.log("Stopping simulator due to error");
@@ -61,14 +61,15 @@ export class Simulator {
6161
}
6262
}
6363

64-
async sendSingleMessage(): Promise<{
64+
async sendSingleMessage(eventType?: string): Promise<{
6565
res: AxiosResponse | undefined;
6666
msg: W3bStreamMessage;
6767
}> {
6868
const message = this.generateSingleMessage();
6969

7070
const header: WSHeader = {
7171
device_id: message.deviceId,
72+
event_type: eventType,
7273
};
7374
const res = await this._client?.publishDirect(header, message);
7475

src/Simulator/simulator.test.ts

+19-2
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ describe("simulator", () => {
136136
);
137137
});
138138
});
139-
140139
describe("simulation", () => {
141140
interface TemperatureDataPoint extends DataPoint {
142141
temperature: number;
@@ -161,6 +160,10 @@ describe("simulator", () => {
161160
});
162161
afterEach(() => {
163162
mockSendMsg.mockRestore();
163+
fs.rmSync(path.join("./", "private.key"), { force: true });
164+
});
165+
it("should send a message to a custom event", async () => {
166+
await simulator1.sendSingleMessage("TEMPERATURE_EVENT");
164167
});
165168
it("should power on", async () => {
166169
jest.useFakeTimers();
@@ -181,6 +184,21 @@ describe("simulator", () => {
181184

182185
jest.useRealTimers();
183186
});
187+
it("should power on with a custom event", async () => {
188+
jest.useFakeTimers();
189+
190+
const eventType = "TEMPERATURE_EVENT";
191+
simulator1.powerOn(1, eventType);
192+
jest.spyOn(simulator1, "sendSingleMessage");
193+
194+
await jest.advanceTimersByTimeAsync(1_000);
195+
196+
expect(simulator1.sendSingleMessage).toHaveBeenCalledTimes(1);
197+
expect(simulator1.sendSingleMessage).toHaveBeenCalledWith(eventType);
198+
199+
simulator1.powerOff();
200+
jest.useRealTimers();
201+
});
184202
it("should power off if msg sending fails", async () => {
185203
jest.useFakeTimers();
186204

@@ -196,7 +214,6 @@ describe("simulator", () => {
196214

197215
jest.useRealTimers();
198216
});
199-
200217
});
201218
});
202219

0 commit comments

Comments
 (0)