@omnitronix/rng-client-core 1.0.10 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/rng-client-core.d.ts +0 -1
- package/dist/core/rng-client-core.js +1 -1
- package/dist/errors/rng-errors.d.ts +0 -1
- package/dist/errors/rng-errors.js +1 -1
- package/dist/grpc/grpc-rng-client.d.ts +0 -1
- package/dist/grpc/grpc-rng-client.js +1 -1
- package/dist/grpc/grpc-rng-interface.d.ts +0 -1
- package/dist/grpc/grpc-rng-interface.js +1 -1
- package/dist/http/http-client.types.d.ts +0 -1
- package/dist/http/http-client.types.js +1 -1
- package/dist/http/http-rng-client.d.ts +0 -1
- package/dist/http/http-rng-client.js +1 -1
- package/dist/http/rest-client.d.ts +0 -1
- package/dist/http/rest-client.js +1 -1
- package/dist/http/rng-client.interface.d.ts +0 -1
- package/dist/http/rng-client.interface.js +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +1 -1
- package/dist/interfaces/client-interfaces.d.ts +6 -3
- package/dist/interfaces/client-interfaces.js +1 -1
- package/dist/interfaces/metrics.d.ts +30 -0
- package/dist/interfaces/metrics.js +3 -0
- package/dist/metrics/default-metrics-handlers.d.ts +2 -0
- package/dist/metrics/default-metrics-handlers.js +23 -0
- package/dist/ring-buffer/interfaces.d.ts +0 -38
- package/dist/ring-buffer/interfaces.js +1 -1
- package/dist/ring-buffer/ring-buffer.d.ts +7 -14
- package/dist/ring-buffer/ring-buffer.js +63 -207
- package/dist/ring-buffer/ring-storage-memory.d.ts +1 -3
- package/dist/ring-buffer/ring-storage-memory.js +1 -25
- package/dist/ring-buffer/ring-storage.d.ts +1 -3
- package/dist/ring-buffer/ring-storage.js +1 -7
- package/dist/rng-client.d.ts +2 -5
- package/dist/rng-client.js +6 -4
- package/package.json +3 -2
- package/src/__tests__/grpc-rng-client.test.ts +167 -0
- package/src/__tests__/rng-client-core.integration.test.ts +117 -0
- package/src/__tests__/rng-client-core.test.ts +249 -0
- package/src/__tests__/rng-client-grpc.test.ts +324 -0
- package/src/__tests__/rng-client.test.ts +296 -0
- package/src/core/rng-client-core.ts +80 -0
- package/src/errors/rng-errors.ts +96 -0
- package/src/grpc/grpc-rng-client.ts +162 -0
- package/src/grpc/grpc-rng-interface.ts +36 -0
- package/src/http/http-client.types.ts +48 -0
- package/src/http/http-rng-client.ts +140 -0
- package/src/http/rest-client.ts +151 -0
- package/src/http/rng-client.interface.ts +22 -0
- package/src/index.ts +21 -0
- package/src/interfaces/client-interfaces.ts +15 -0
- package/src/interfaces/metrics.ts +38 -0
- package/src/metrics/default-metrics-handlers.ts +29 -0
- package/src/ring-buffer/interfaces.ts +9 -0
- package/src/ring-buffer/ring-buffer.ts +214 -0
- package/src/ring-buffer/ring-storage-memory.ts +48 -0
- package/src/ring-buffer/ring-storage.ts +59 -0
- package/src/rng-client.ts +190 -0
- package/src/rng.proto +102 -0
- package/dist/core/rng-client-core.d.ts.map +0 -1
- package/dist/core/rng-client-core.js.map +0 -1
- package/dist/errors/rng-errors.d.ts.map +0 -1
- package/dist/errors/rng-errors.js.map +0 -1
- package/dist/grpc/grpc-rng-client.d.ts.map +0 -1
- package/dist/grpc/grpc-rng-client.js.map +0 -1
- package/dist/grpc/grpc-rng-interface.d.ts.map +0 -1
- package/dist/grpc/grpc-rng-interface.js.map +0 -1
- package/dist/http/http-client.types.d.ts.map +0 -1
- package/dist/http/http-client.types.js.map +0 -1
- package/dist/http/http-rng-client.d.ts.map +0 -1
- package/dist/http/http-rng-client.js.map +0 -1
- package/dist/http/rest-client.d.ts.map +0 -1
- package/dist/http/rest-client.js.map +0 -1
- package/dist/http/rng-client.interface.d.ts.map +0 -1
- package/dist/http/rng-client.interface.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interfaces/client-interfaces.d.ts.map +0 -1
- package/dist/interfaces/client-interfaces.js.map +0 -1
- package/dist/ring-buffer/interfaces.d.ts.map +0 -1
- package/dist/ring-buffer/interfaces.js.map +0 -1
- package/dist/ring-buffer/ring-buffer.d.ts.map +0 -1
- package/dist/ring-buffer/ring-buffer.js.map +0 -1
- package/dist/ring-buffer/ring-storage-memory.d.ts.map +0 -1
- package/dist/ring-buffer/ring-storage-memory.js.map +0 -1
- package/dist/ring-buffer/ring-storage.d.ts.map +0 -1
- package/dist/ring-buffer/ring-storage.js.map +0 -1
- package/dist/rng-client.d.ts.map +0 -1
- package/dist/rng-client.js.map +0 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { GrpcRngClient } from "../grpc/grpc-rng-client";
|
|
2
|
+
|
|
3
|
+
// Mock the gRPC client
|
|
4
|
+
const mockGrpcClient = {
|
|
5
|
+
Single: jest.fn(),
|
|
6
|
+
SingleBatch: jest.fn(),
|
|
7
|
+
Float: jest.fn(),
|
|
8
|
+
FloatBatch: jest.fn(),
|
|
9
|
+
SingleBatchWithSeeds: jest.fn(),
|
|
10
|
+
FloatBatchWithSeeds: jest.fn(),
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// Mock gRPC modules
|
|
14
|
+
jest.mock("@grpc/grpc-js", () => ({
|
|
15
|
+
loadPackageDefinition: jest.fn(() => ({
|
|
16
|
+
rng: {
|
|
17
|
+
RngService: jest.fn(() => mockGrpcClient),
|
|
18
|
+
},
|
|
19
|
+
})),
|
|
20
|
+
credentials: {
|
|
21
|
+
createInsecure: jest.fn(),
|
|
22
|
+
},
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
jest.mock("@grpc/proto-loader", () => ({
|
|
26
|
+
loadSync: jest.fn(() => ({})),
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
describe("GrpcRngClient", () => {
|
|
30
|
+
let grpcRngClient: GrpcRngClient;
|
|
31
|
+
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
grpcRngClient = new GrpcRngClient("localhost:50051");
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
afterEach(() => {
|
|
37
|
+
jest.clearAllMocks();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe("getSingleNumber", () => {
|
|
41
|
+
it("should call Single method with correct parameters", async () => {
|
|
42
|
+
const mockResponse = {
|
|
43
|
+
id: "test-id",
|
|
44
|
+
seed: 12345,
|
|
45
|
+
result: 42,
|
|
46
|
+
min: 1,
|
|
47
|
+
max: 100,
|
|
48
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
mockGrpcClient.Single.mockImplementation((request, callback) => {
|
|
52
|
+
callback(null, mockResponse);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const result = await grpcRngClient.getSingleNumber({
|
|
56
|
+
min: 1,
|
|
57
|
+
max: 100,
|
|
58
|
+
seed: 12345,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
expect(mockGrpcClient.Single).toHaveBeenCalledWith(
|
|
62
|
+
{
|
|
63
|
+
min: 1,
|
|
64
|
+
max: 100,
|
|
65
|
+
seed: 12345,
|
|
66
|
+
},
|
|
67
|
+
expect.any(Function)
|
|
68
|
+
);
|
|
69
|
+
expect(result).toEqual(mockResponse);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
describe("getBatchNumbers", () => {
|
|
74
|
+
it("should call SingleBatch method with correct parameters", async () => {
|
|
75
|
+
const mockResponse = {
|
|
76
|
+
id: "test-id",
|
|
77
|
+
seed: 12345,
|
|
78
|
+
result: [1, 2, 3, 4, 5],
|
|
79
|
+
min: 1,
|
|
80
|
+
max: 100,
|
|
81
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
mockGrpcClient.SingleBatch.mockImplementation((request, callback) => {
|
|
85
|
+
callback(null, mockResponse);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const result = await grpcRngClient.getBatchNumbers({
|
|
89
|
+
min: 1,
|
|
90
|
+
max: 100,
|
|
91
|
+
count: 5,
|
|
92
|
+
seed: 12345,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
expect(mockGrpcClient.SingleBatch).toHaveBeenCalledWith(
|
|
96
|
+
{
|
|
97
|
+
min: 1,
|
|
98
|
+
max: 100,
|
|
99
|
+
count: 5,
|
|
100
|
+
seed: 12345,
|
|
101
|
+
},
|
|
102
|
+
expect.any(Function)
|
|
103
|
+
);
|
|
104
|
+
expect(result).toEqual(mockResponse);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
describe("getSingleFloat", () => {
|
|
109
|
+
it("should call Float method with correct parameters", async () => {
|
|
110
|
+
const mockResponse = {
|
|
111
|
+
id: "test-id",
|
|
112
|
+
seed: 12345,
|
|
113
|
+
result: 0.75,
|
|
114
|
+
min: 0,
|
|
115
|
+
max: 1,
|
|
116
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
mockGrpcClient.Float.mockImplementation((request, callback) => {
|
|
120
|
+
callback(null, mockResponse);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
const result = await grpcRngClient.getSingleFloat({
|
|
124
|
+
seed: 12345,
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
expect(mockGrpcClient.Float).toHaveBeenCalledWith(
|
|
128
|
+
{
|
|
129
|
+
seed: 12345,
|
|
130
|
+
},
|
|
131
|
+
expect.any(Function)
|
|
132
|
+
);
|
|
133
|
+
expect(result).toEqual(mockResponse);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
describe("getBatchFloats", () => {
|
|
138
|
+
it("should call FloatBatch method with correct parameters", async () => {
|
|
139
|
+
const mockResponse = {
|
|
140
|
+
id: "test-id",
|
|
141
|
+
seed: 12345,
|
|
142
|
+
result: [0.1, 0.2, 0.3, 0.4, 0.5],
|
|
143
|
+
min: 0,
|
|
144
|
+
max: 1,
|
|
145
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
mockGrpcClient.FloatBatch.mockImplementation((request, callback) => {
|
|
149
|
+
callback(null, mockResponse);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
const result = await grpcRngClient.getBatchFloats({
|
|
153
|
+
count: 5,
|
|
154
|
+
seed: 12345,
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
expect(mockGrpcClient.FloatBatch).toHaveBeenCalledWith(
|
|
158
|
+
{
|
|
159
|
+
count: 5,
|
|
160
|
+
seed: 12345,
|
|
161
|
+
},
|
|
162
|
+
expect.any(Function)
|
|
163
|
+
);
|
|
164
|
+
expect(result).toEqual(mockResponse);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { RngClientCore } from "../core/rng-client-core";
|
|
2
|
+
import { RngClientConfig } from "../interfaces/client-interfaces";
|
|
3
|
+
|
|
4
|
+
// Mock the HTTP and gRPC clients
|
|
5
|
+
jest.mock("../http/http-rng-client", () => ({
|
|
6
|
+
HttpRngClient: jest.fn().mockImplementation(() => ({
|
|
7
|
+
getSingleNumber: jest.fn(),
|
|
8
|
+
getBatchNumbers: jest.fn(),
|
|
9
|
+
getSingleFloat: jest.fn(),
|
|
10
|
+
getBatchFloats: jest.fn(),
|
|
11
|
+
})),
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.mock("../grpc/grpc-rng-client", () => ({
|
|
15
|
+
GrpcRngClient: jest.fn().mockImplementation(() => ({
|
|
16
|
+
getSingleNumber: jest.fn(),
|
|
17
|
+
getBatchNumbers: jest.fn(),
|
|
18
|
+
getSingleFloat: jest.fn(),
|
|
19
|
+
getBatchFloats: jest.fn(),
|
|
20
|
+
})),
|
|
21
|
+
}));
|
|
22
|
+
|
|
23
|
+
describe("RngClientCore Integration", () => {
|
|
24
|
+
let mockHttpClient: any;
|
|
25
|
+
let mockGrpcClient: any;
|
|
26
|
+
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
const { HttpRngClient } = require("../http/http-rng-client");
|
|
29
|
+
const { GrpcRngClient } = require("../grpc/grpc-rng-client");
|
|
30
|
+
|
|
31
|
+
mockHttpClient = {
|
|
32
|
+
getSingleNumber: jest.fn(),
|
|
33
|
+
getBatchNumbers: jest.fn(),
|
|
34
|
+
getSingleFloat: jest.fn(),
|
|
35
|
+
getBatchFloats: jest.fn(),
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
mockGrpcClient = {
|
|
39
|
+
getSingleNumber: jest.fn(),
|
|
40
|
+
getBatchNumbers: jest.fn(),
|
|
41
|
+
getSingleFloat: jest.fn(),
|
|
42
|
+
getBatchFloats: jest.fn(),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
HttpRngClient.mockImplementation(() => mockHttpClient);
|
|
46
|
+
GrpcRngClient.mockImplementation(() => mockGrpcClient);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
jest.clearAllMocks();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe("REST client initialization", () => {
|
|
54
|
+
it('should initialize with HttpRngClient when clientMethod is "rest"', () => {
|
|
55
|
+
const config: RngClientConfig = {
|
|
56
|
+
serverUrl: "http://localhost:3001",
|
|
57
|
+
grpcUrl: "localhost:50051",
|
|
58
|
+
clientMethod: "rest",
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
new RngClientCore(config);
|
|
62
|
+
|
|
63
|
+
const { HttpRngClient } = require("../http/http-rng-client");
|
|
64
|
+
expect(HttpRngClient).toHaveBeenCalledWith("http://localhost:3001");
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
describe("gRPC client initialization", () => {
|
|
69
|
+
it('should initialize with GrpcRngClient when clientMethod is "grpc"', () => {
|
|
70
|
+
const config: RngClientConfig = {
|
|
71
|
+
serverUrl: "http://localhost:3001",
|
|
72
|
+
grpcUrl: "localhost:50051",
|
|
73
|
+
clientMethod: "grpc",
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
new RngClientCore(config);
|
|
77
|
+
|
|
78
|
+
const { GrpcRngClient } = require("../grpc/grpc-rng-client");
|
|
79
|
+
expect(GrpcRngClient).toHaveBeenCalledWith("localhost:50051");
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe("method delegation", () => {
|
|
84
|
+
it("should delegate getRandomNumber to the correct client", async () => {
|
|
85
|
+
const config: RngClientConfig = {
|
|
86
|
+
serverUrl: "http://localhost:3001",
|
|
87
|
+
grpcUrl: "localhost:50051",
|
|
88
|
+
clientMethod: "rest",
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const clientCore = new RngClientCore(config);
|
|
92
|
+
const mockResponse = {
|
|
93
|
+
id: "test-id",
|
|
94
|
+
seed: 12345,
|
|
95
|
+
result: 42,
|
|
96
|
+
min: 1,
|
|
97
|
+
max: 100,
|
|
98
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
mockHttpClient.getSingleNumber.mockResolvedValue(mockResponse);
|
|
102
|
+
|
|
103
|
+
const result = await clientCore.getRandomNumber({
|
|
104
|
+
min: 1,
|
|
105
|
+
max: 100,
|
|
106
|
+
seed: 12345,
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
expect(mockHttpClient.getSingleNumber).toHaveBeenCalledWith({
|
|
110
|
+
min: 1,
|
|
111
|
+
max: 100,
|
|
112
|
+
seed: 12345,
|
|
113
|
+
});
|
|
114
|
+
expect(result).toEqual(mockResponse);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { RngClientCore } from "../core/rng-client-core";
|
|
2
|
+
import { RngClientConfig } from "../interfaces/client-interfaces";
|
|
3
|
+
|
|
4
|
+
// Mock the HTTP and gRPC clients
|
|
5
|
+
jest.mock("../http/http-rng-client", () => ({
|
|
6
|
+
HttpRngClient: jest.fn().mockImplementation(() => ({
|
|
7
|
+
getSingleNumber: jest.fn(),
|
|
8
|
+
getBatchNumbers: jest.fn(),
|
|
9
|
+
getSingleFloat: jest.fn(),
|
|
10
|
+
getBatchFloats: jest.fn(),
|
|
11
|
+
})),
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.mock("../grpc/grpc-rng-client", () => ({
|
|
15
|
+
GrpcRngClient: jest.fn().mockImplementation(() => ({
|
|
16
|
+
getSingleNumber: jest.fn(),
|
|
17
|
+
getBatchNumbers: jest.fn(),
|
|
18
|
+
getSingleFloat: jest.fn(),
|
|
19
|
+
getBatchFloats: jest.fn(),
|
|
20
|
+
})),
|
|
21
|
+
}));
|
|
22
|
+
|
|
23
|
+
describe("RngClientCore", () => {
|
|
24
|
+
let mockHttpClient: any;
|
|
25
|
+
let mockGrpcClient: any;
|
|
26
|
+
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
const { HttpRngClient } = require("../http/http-rng-client");
|
|
29
|
+
const { GrpcRngClient } = require("../grpc/grpc-rng-client");
|
|
30
|
+
|
|
31
|
+
mockHttpClient = {
|
|
32
|
+
getSingleNumber: jest.fn(),
|
|
33
|
+
getBatchNumbers: jest.fn(),
|
|
34
|
+
getSingleFloat: jest.fn(),
|
|
35
|
+
getBatchFloats: jest.fn(),
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
mockGrpcClient = {
|
|
39
|
+
getSingleNumber: jest.fn(),
|
|
40
|
+
getBatchNumbers: jest.fn(),
|
|
41
|
+
getSingleFloat: jest.fn(),
|
|
42
|
+
getBatchFloats: jest.fn(),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
HttpRngClient.mockImplementation(() => mockHttpClient);
|
|
46
|
+
GrpcRngClient.mockImplementation(() => mockGrpcClient);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
jest.clearAllMocks();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe("REST client initialization", () => {
|
|
54
|
+
it('should initialize with HttpRngClient when clientMethod is "rest"', () => {
|
|
55
|
+
const config: RngClientConfig = {
|
|
56
|
+
serverUrl: "http://localhost:3001",
|
|
57
|
+
grpcUrl: "localhost:50051",
|
|
58
|
+
clientMethod: "rest",
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
new RngClientCore(config);
|
|
62
|
+
|
|
63
|
+
const { HttpRngClient } = require("../http/http-rng-client");
|
|
64
|
+
expect(HttpRngClient).toHaveBeenCalledWith("http://localhost:3001");
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
describe("gRPC client initialization", () => {
|
|
69
|
+
it('should initialize with GrpcRngClient when clientMethod is "grpc"', () => {
|
|
70
|
+
const config: RngClientConfig = {
|
|
71
|
+
serverUrl: "http://localhost:3001",
|
|
72
|
+
grpcUrl: "localhost:50051",
|
|
73
|
+
clientMethod: "grpc",
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
new RngClientCore(config);
|
|
77
|
+
|
|
78
|
+
const { GrpcRngClient } = require("../grpc/grpc-rng-client");
|
|
79
|
+
expect(GrpcRngClient).toHaveBeenCalledWith("localhost:50051");
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe("getRandomNumber", () => {
|
|
84
|
+
it("should call the correct client method", async () => {
|
|
85
|
+
const config: RngClientConfig = {
|
|
86
|
+
serverUrl: "http://localhost:3001",
|
|
87
|
+
grpcUrl: "localhost:50051",
|
|
88
|
+
clientMethod: "rest",
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const clientCore = new RngClientCore(config);
|
|
92
|
+
const mockResponse = {
|
|
93
|
+
id: "test-id",
|
|
94
|
+
seed: 12345,
|
|
95
|
+
result: 42,
|
|
96
|
+
min: 1,
|
|
97
|
+
max: 100,
|
|
98
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
mockHttpClient.getSingleNumber.mockResolvedValue(mockResponse);
|
|
102
|
+
|
|
103
|
+
const result = await clientCore.getRandomNumber({
|
|
104
|
+
min: 1,
|
|
105
|
+
max: 100,
|
|
106
|
+
seed: 12345,
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
expect(mockHttpClient.getSingleNumber).toHaveBeenCalledWith({
|
|
110
|
+
min: 1,
|
|
111
|
+
max: 100,
|
|
112
|
+
seed: 12345,
|
|
113
|
+
});
|
|
114
|
+
expect(result).toEqual(mockResponse);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
describe("getBatchNumbers", () => {
|
|
119
|
+
it("should call the correct client method", async () => {
|
|
120
|
+
const config: RngClientConfig = {
|
|
121
|
+
serverUrl: "http://localhost:3001",
|
|
122
|
+
grpcUrl: "localhost:50051",
|
|
123
|
+
clientMethod: "rest",
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const clientCore = new RngClientCore(config);
|
|
127
|
+
const mockResponse = {
|
|
128
|
+
id: "test-id",
|
|
129
|
+
seed: 12345,
|
|
130
|
+
result: [1, 2, 3, 4, 5],
|
|
131
|
+
min: 1,
|
|
132
|
+
max: 100,
|
|
133
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
mockHttpClient.getBatchNumbers.mockResolvedValue(mockResponse);
|
|
137
|
+
|
|
138
|
+
const result = await clientCore.getBatchNumbers({
|
|
139
|
+
min: 1,
|
|
140
|
+
max: 100,
|
|
141
|
+
count: 5,
|
|
142
|
+
seed: 12345,
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
expect(mockHttpClient.getBatchNumbers).toHaveBeenCalledWith({
|
|
146
|
+
min: 1,
|
|
147
|
+
max: 100,
|
|
148
|
+
count: 5,
|
|
149
|
+
seed: 12345,
|
|
150
|
+
});
|
|
151
|
+
expect(result).toEqual(mockResponse);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
describe("getSingleFloat", () => {
|
|
156
|
+
it("should call the correct client method", async () => {
|
|
157
|
+
const config: RngClientConfig = {
|
|
158
|
+
serverUrl: "http://localhost:3001",
|
|
159
|
+
grpcUrl: "localhost:50051",
|
|
160
|
+
clientMethod: "rest",
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const clientCore = new RngClientCore(config);
|
|
164
|
+
const mockResponse = {
|
|
165
|
+
id: "test-id",
|
|
166
|
+
seed: 12345,
|
|
167
|
+
result: 0.75,
|
|
168
|
+
min: 0,
|
|
169
|
+
max: 1,
|
|
170
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
mockHttpClient.getSingleFloat.mockResolvedValue(mockResponse);
|
|
174
|
+
|
|
175
|
+
const result = await clientCore.getSingleFloat({
|
|
176
|
+
seed: 12345,
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
expect(mockHttpClient.getSingleFloat).toHaveBeenCalledWith({
|
|
180
|
+
seed: 12345,
|
|
181
|
+
});
|
|
182
|
+
expect(result).toEqual(mockResponse);
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
describe("getBatchFloats", () => {
|
|
187
|
+
it("should call the correct client method", async () => {
|
|
188
|
+
const config: RngClientConfig = {
|
|
189
|
+
serverUrl: "http://localhost:3001",
|
|
190
|
+
grpcUrl: "localhost:50051",
|
|
191
|
+
clientMethod: "rest",
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const clientCore = new RngClientCore(config);
|
|
195
|
+
const mockResponse = {
|
|
196
|
+
id: "test-id",
|
|
197
|
+
seed: 12345,
|
|
198
|
+
result: [0.1, 0.2, 0.3, 0.4, 0.5],
|
|
199
|
+
min: 0,
|
|
200
|
+
max: 1,
|
|
201
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
mockHttpClient.getBatchFloats.mockResolvedValue(mockResponse);
|
|
205
|
+
|
|
206
|
+
const result = await clientCore.getBatchFloats({
|
|
207
|
+
count: 5,
|
|
208
|
+
seed: 12345,
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
expect(mockHttpClient.getBatchFloats).toHaveBeenCalledWith({
|
|
212
|
+
count: 5,
|
|
213
|
+
seed: 12345,
|
|
214
|
+
});
|
|
215
|
+
expect(result).toEqual(mockResponse);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
describe("getRandomFloat", () => {
|
|
220
|
+
it("should call getSingleFloat with correct parameters", async () => {
|
|
221
|
+
const config: RngClientConfig = {
|
|
222
|
+
serverUrl: "http://localhost:3001",
|
|
223
|
+
grpcUrl: "localhost:50051",
|
|
224
|
+
clientMethod: "rest",
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
const clientCore = new RngClientCore(config);
|
|
228
|
+
const mockResponse = {
|
|
229
|
+
id: "test-id",
|
|
230
|
+
seed: 12345,
|
|
231
|
+
result: 0.75,
|
|
232
|
+
min: 0,
|
|
233
|
+
max: 1,
|
|
234
|
+
createdAt: "2023-01-01T00:00:00Z",
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
mockHttpClient.getSingleFloat.mockResolvedValue(mockResponse);
|
|
238
|
+
|
|
239
|
+
const result = await clientCore.getRandomFloat({
|
|
240
|
+
seed: 12345,
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
expect(mockHttpClient.getSingleFloat).toHaveBeenCalledWith({
|
|
244
|
+
seed: 12345,
|
|
245
|
+
});
|
|
246
|
+
expect(result).toEqual(mockResponse);
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
});
|