@futdevpro/nts-dynamo 1.9.50 → 1.10.1

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.
Files changed (163) hide show
  1. package/.github/workflows/main.yml +57 -3
  2. package/build/_collections/archive.util.spec.d.ts +2 -0
  3. package/build/_collections/archive.util.spec.d.ts.map +1 -0
  4. package/build/_collections/archive.util.spec.js +21 -0
  5. package/build/_collections/archive.util.spec.js.map +1 -0
  6. package/build/_models/control-models/api-call-params.control-model.spec.d.ts +2 -0
  7. package/build/_models/control-models/api-call-params.control-model.spec.d.ts.map +1 -0
  8. package/build/_models/control-models/api-call-params.control-model.spec.js +82 -0
  9. package/build/_models/control-models/api-call-params.control-model.spec.js.map +1 -0
  10. package/build/_models/control-models/app-params.control-model.spec.d.ts +2 -0
  11. package/build/_models/control-models/app-params.control-model.spec.d.ts.map +1 -0
  12. package/build/_models/control-models/app-params.control-model.spec.js +59 -0
  13. package/build/_models/control-models/app-params.control-model.spec.js.map +1 -0
  14. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts +2 -0
  15. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts.map +1 -0
  16. package/build/_models/control-models/app-system-controls.control-model.spec.js +26 -0
  17. package/build/_models/control-models/app-system-controls.control-model.spec.js.map +1 -0
  18. package/build/_models/control-models/endpoint-params.control-model.d.ts +1 -1
  19. package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  20. package/build/_models/control-models/endpoint-params.control-model.js +3 -3
  21. package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
  22. package/build/_models/control-models/http-settings.control-model.spec.d.ts +2 -0
  23. package/build/_models/control-models/http-settings.control-model.spec.d.ts.map +1 -0
  24. package/build/_models/control-models/http-settings.control-model.spec.js +62 -0
  25. package/build/_models/control-models/http-settings.control-model.spec.js.map +1 -0
  26. package/build/_models/control-models/system-control.control-model.spec.d.ts +2 -0
  27. package/build/_models/control-models/system-control.control-model.spec.d.ts.map +1 -0
  28. package/build/_models/control-models/system-control.control-model.spec.js +24 -0
  29. package/build/_models/control-models/system-control.control-model.spec.js.map +1 -0
  30. package/build/_modules/custom-data/custom-data.controller.d.ts.map +1 -1
  31. package/build/_modules/custom-data/custom-data.controller.js +3 -3
  32. package/build/_modules/custom-data/custom-data.controller.js.map +1 -1
  33. package/build/_modules/custom-data/custom-data.data-service.d.ts +1 -1
  34. package/build/_modules/custom-data/custom-data.data-service.d.ts.map +1 -1
  35. package/build/_modules/custom-data/custom-data.data-service.js +3 -3
  36. package/build/_modules/custom-data/custom-data.data-service.js.map +1 -1
  37. package/build/_modules/mock/app-params.mock.spec.d.ts +2 -0
  38. package/build/_modules/mock/app-params.mock.spec.d.ts.map +1 -0
  39. package/build/_modules/mock/app-params.mock.spec.js +19 -0
  40. package/build/_modules/mock/app-params.mock.spec.js.map +1 -0
  41. package/build/_modules/mock/auth-service.mock.spec.d.ts +2 -0
  42. package/build/_modules/mock/auth-service.mock.spec.d.ts.map +1 -0
  43. package/build/_modules/mock/auth-service.mock.spec.js +40 -0
  44. package/build/_modules/mock/auth-service.mock.spec.js.map +1 -0
  45. package/build/_modules/mock/controller.mock.spec.d.ts +2 -0
  46. package/build/_modules/mock/controller.mock.spec.d.ts.map +1 -0
  47. package/build/_modules/mock/controller.mock.spec.js +23 -0
  48. package/build/_modules/mock/controller.mock.spec.js.map +1 -0
  49. package/build/_modules/mock/data-model.mock.spec.d.ts +2 -0
  50. package/build/_modules/mock/data-model.mock.spec.d.ts.map +1 -0
  51. package/build/_modules/mock/data-model.mock.spec.js +99 -0
  52. package/build/_modules/mock/data-model.mock.spec.js.map +1 -0
  53. package/build/_modules/mock/email-service-collection.mock.spec.d.ts +2 -0
  54. package/build/_modules/mock/email-service-collection.mock.spec.d.ts.map +1 -0
  55. package/build/_modules/mock/email-service-collection.mock.spec.js +21 -0
  56. package/build/_modules/mock/email-service-collection.mock.spec.js.map +1 -0
  57. package/build/_modules/mock/email-service.mock.spec.d.ts +2 -0
  58. package/build/_modules/mock/email-service.mock.spec.d.ts.map +1 -0
  59. package/build/_modules/mock/email-service.mock.spec.js +14 -0
  60. package/build/_modules/mock/email-service.mock.spec.js.map +1 -0
  61. package/build/_modules/mock/socket-client.mock.js +2 -2
  62. package/build/_modules/mock/socket-client.mock.spec.d.ts +2 -0
  63. package/build/_modules/mock/socket-client.mock.spec.d.ts.map +1 -0
  64. package/build/_modules/mock/socket-client.mock.spec.js +32 -0
  65. package/build/_modules/mock/socket-client.mock.spec.js.map +1 -0
  66. package/build/_modules/mock/socket-server.mock.spec.d.ts +2 -0
  67. package/build/_modules/mock/socket-server.mock.spec.d.ts.map +1 -0
  68. package/build/_modules/mock/socket-server.mock.spec.js +36 -0
  69. package/build/_modules/mock/socket-server.mock.spec.js.map +1 -0
  70. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts +2 -0
  71. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts.map +1 -0
  72. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js +22 -0
  73. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js.map +1 -0
  74. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts +2 -0
  75. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts.map +1 -0
  76. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js +29 -0
  77. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js.map +1 -0
  78. package/build/_modules/socket/_services/socket-server.service.js +1 -1
  79. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  80. package/build/_modules/usage/usage.controller.d.ts.map +1 -1
  81. package/build/_modules/usage/usage.controller.js +6 -4
  82. package/build/_modules/usage/usage.controller.js.map +1 -1
  83. package/build/_modules/usage/usage.data-service.d.ts +4 -4
  84. package/build/_modules/usage/usage.data-service.d.ts.map +1 -1
  85. package/build/_modules/usage/usage.data-service.js +2 -2
  86. package/build/_modules/usage/usage.data-service.js.map +1 -1
  87. package/build/_services/base/data.service.d.ts +5 -5
  88. package/build/_services/base/data.service.d.ts.map +1 -1
  89. package/build/_services/base/data.service.js +18 -6
  90. package/build/_services/base/data.service.js.map +1 -1
  91. package/build/_services/base/db.service.d.ts.map +1 -1
  92. package/build/_services/base/db.service.js +8 -1
  93. package/build/_services/base/db.service.js.map +1 -1
  94. package/build/_services/base/singleton.service-base.d.ts.map +1 -1
  95. package/build/_services/base/singleton.service-base.js.map +1 -1
  96. package/build/_services/core/api.service.d.ts +1 -1
  97. package/build/_services/core/api.service.js +2 -2
  98. package/build/_services/core/api.service.spec.d.ts +2 -0
  99. package/build/_services/core/api.service.spec.d.ts.map +1 -0
  100. package/build/_services/core/api.service.spec.js +75 -0
  101. package/build/_services/core/api.service.spec.js.map +1 -0
  102. package/build/_services/core/email.service.d.ts +6 -6
  103. package/build/_services/core/email.service.d.ts.map +1 -1
  104. package/build/_services/core/email.service.js.map +1 -1
  105. package/build/_services/core/email.service.spec.d.ts +2 -0
  106. package/build/_services/core/email.service.spec.d.ts.map +1 -0
  107. package/build/_services/core/email.service.spec.js +77 -0
  108. package/build/_services/core/email.service.spec.js.map +1 -0
  109. package/build/_services/core/global.service.d.ts.map +1 -1
  110. package/build/_services/core/global.service.js +2 -1
  111. package/build/_services/core/global.service.js.map +1 -1
  112. package/build/_services/route/controller.service.d.ts +3 -3
  113. package/build/_services/route/controller.service.js +2 -2
  114. package/build/_services/route/controller.service.spec.d.ts +2 -0
  115. package/build/_services/route/controller.service.spec.d.ts.map +1 -0
  116. package/build/_services/route/controller.service.spec.js +48 -0
  117. package/build/_services/route/controller.service.spec.js.map +1 -0
  118. package/build/_services/route/routing-module.service.spec.d.ts +2 -0
  119. package/build/_services/route/routing-module.service.spec.d.ts.map +1 -0
  120. package/build/_services/route/routing-module.service.spec.js +65 -0
  121. package/build/_services/route/routing-module.service.spec.js.map +1 -0
  122. package/build/_services/server/app.server.d.ts +5 -5
  123. package/build/_services/server/app.server.d.ts.map +1 -1
  124. package/build/_services/server/app.server.js +9 -7
  125. package/build/_services/server/app.server.js.map +1 -1
  126. package/package.json +8 -8
  127. package/spec/support/jasmine.json +8 -0
  128. package/src/_collections/archive.util.spec.ts +22 -0
  129. package/src/_models/control-models/api-call-params.control-model.spec.ts +94 -0
  130. package/src/_models/control-models/app-params.control-model.spec.ts +69 -0
  131. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -0
  132. package/src/_models/control-models/endpoint-params.control-model.ts +7 -6
  133. package/src/_models/control-models/http-settings.control-model.spec.ts +66 -0
  134. package/src/_models/control-models/system-control.control-model.spec.ts +27 -0
  135. package/src/_modules/custom-data/custom-data.controller.ts +6 -6
  136. package/src/_modules/custom-data/custom-data.data-service.ts +4 -3
  137. package/src/_modules/mock/app-params.mock.spec.ts +21 -0
  138. package/src/_modules/mock/auth-service.mock.spec.ts +47 -0
  139. package/src/_modules/mock/controller.mock.spec.ts +26 -0
  140. package/src/_modules/mock/data-model.mock.spec.ts +109 -0
  141. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -0
  142. package/src/_modules/mock/email-service.mock.spec.ts +17 -0
  143. package/src/_modules/mock/socket-client.mock.spec.ts +40 -0
  144. package/src/_modules/mock/socket-client.mock.ts +4 -4
  145. package/src/_modules/mock/socket-server.mock.spec.ts +44 -0
  146. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +30 -0
  147. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +33 -0
  148. package/src/_modules/socket/_services/socket-server.service.ts +1 -1
  149. package/src/_modules/test/get-test-routing-module.util.ts +2 -2
  150. package/src/_modules/usage/usage.controller.ts +10 -8
  151. package/src/_modules/usage/usage.data-service.ts +10 -7
  152. package/src/_services/base/data.service.ts +34 -15
  153. package/src/_services/base/db.service.ts +10 -1
  154. package/src/_services/base/singleton.service-base.ts +0 -2
  155. package/src/_services/core/api.service.spec.ts +96 -0
  156. package/src/_services/core/api.service.ts +2 -2
  157. package/src/_services/core/email.service.spec.ts +93 -0
  158. package/src/_services/core/email.service.ts +9 -11
  159. package/src/_services/core/global.service.ts +3 -2
  160. package/src/_services/route/controller.service.spec.ts +52 -0
  161. package/src/_services/route/controller.service.ts +3 -3
  162. package/src/_services/route/routing-module.service.spec.ts +81 -0
  163. package/src/_services/server/app.server.ts +26 -24
@@ -0,0 +1,47 @@
1
+
2
+ import { Request, Response } from 'express';
3
+ import { AuthService_Mock } from './auth-service.mock';
4
+
5
+ describe('AuthService_Mock', () => {
6
+ let authServiceMock: AuthService_Mock;
7
+
8
+ beforeEach(() => {
9
+ authServiceMock = AuthService_Mock.getInstance();
10
+ });
11
+
12
+ it('should return a singleton instance', () => {
13
+ const instance1 = AuthService_Mock.getInstance();
14
+ const instance2 = AuthService_Mock.getInstance();
15
+ expect(instance1).toBe(instance2);
16
+ });
17
+
18
+ it('should return "accountId_mock" from getIssuerFromRequest', () => {
19
+ const req = {} as Request;
20
+ const issuer = authServiceMock.getIssuerFromRequest(req);
21
+ expect(issuer).toBe('accountId_mock');
22
+ });
23
+
24
+ it('should return "username_mock" from getUsernameFromRequest', () => {
25
+ const req = {} as Request;
26
+ const username = authServiceMock.getUsernameFromRequest(req);
27
+ expect(username).toBe('username_mock');
28
+ });
29
+
30
+ it('should have an authenticate_token method', async () => {
31
+ const req = {} as Request;
32
+ const res = {} as Response;
33
+ await expectAsync(authServiceMock.authenticate_token(req, res)).toBeResolved();
34
+ });
35
+
36
+ it('should have an authenticate_tokenSelf method', async () => {
37
+ const req = {} as Request;
38
+ const res = {} as Response;
39
+ await expectAsync(authServiceMock.authenticate_tokenSelf(req, res)).toBeResolved();
40
+ });
41
+
42
+ it('should have an authenticate_tokenPerm_accUsageData method', async () => {
43
+ const req = {} as Request;
44
+ const res = {} as Response;
45
+ await expectAsync(authServiceMock.authenticate_tokenPerm_accUsageData(req, res)).toBeResolved();
46
+ });
47
+ });
@@ -0,0 +1,26 @@
1
+
2
+ import { DyNTS_Controller_Mock } from './controller.mock';
3
+ import { DyNTS_endpoints_mock } from './endpoint.mock';
4
+
5
+ describe('DyNTS_Controller_Mock', () => {
6
+ let controllerMock: DyNTS_Controller_Mock;
7
+
8
+ beforeEach(() => {
9
+ controllerMock = DyNTS_Controller_Mock.getInstance();
10
+ });
11
+
12
+ it('should create an instance of DyNTS_Controller_Mock', () => {
13
+ expect(controllerMock).toBeTruthy();
14
+ expect(controllerMock instanceof DyNTS_Controller_Mock).toBeTrue();
15
+ });
16
+
17
+ it('should setup endpoints correctly', () => {
18
+ controllerMock.setupEndpoints();
19
+ expect(controllerMock.endpoints).toEqual(DyNTS_endpoints_mock);
20
+ });
21
+
22
+ it('should return the same instance on multiple getInstance calls', () => {
23
+ const anotherInstance = DyNTS_Controller_Mock.getInstance();
24
+ expect(controllerMock).toBe(anotherInstance);
25
+ });
26
+ });
@@ -0,0 +1,109 @@
1
+
2
+ import {
3
+ Dependency_Mock, dependency_mock_DataParams, Dependent_Mock, dependent_mock_DataParams
4
+ } from './data-model.mock';
5
+
6
+ describe('Dependency_Mock', () => {
7
+ it('should create an instance with default values', () => {
8
+ const instance = new Dependency_Mock();
9
+
10
+ expect(instance).toBeTruthy();
11
+ expect(instance.string).toBeUndefined();
12
+ expect(instance.number).toBeUndefined();
13
+ expect(instance.date).toBeUndefined();
14
+ expect(instance.boolean).toBeUndefined();
15
+ expect(instance.array).toBeUndefined();
16
+ expect(instance.object).toBeUndefined();
17
+ expect(instance.objectArray).toBeUndefined();
18
+ expect(instance.objectArrayArray).toBeUndefined();
19
+ });
20
+
21
+ it('should create an instance with provided values', () => {
22
+ const mockData: Dependency_Mock = {
23
+ string: 'test',
24
+ number: 42,
25
+ date: new Date(),
26
+ boolean: true,
27
+ array: [ 'a', 'b' ],
28
+ object: { key: 'value' },
29
+ objectArray: [{ key: 'value' }],
30
+ objectArrayArray: [[{ key: 'value' }]],
31
+ };
32
+ const instance = new Dependency_Mock(mockData);
33
+
34
+ expect(instance).toEqual(jasmine.objectContaining(mockData));
35
+ });
36
+ });
37
+
38
+ xdescribe('DyFM_DataModel_Params for Dependency_Mock', () => {
39
+ it('should have correct dataName and properties', () => {
40
+ expect(dependency_mock_DataParams.dataName).toBe('dependencyMock');
41
+ expect(dependency_mock_DataParams.properties).toEqual({
42
+ string: { type: 'string' },
43
+ number: { type: 'number' },
44
+ date: { type: 'Date' },
45
+ boolean: { type: 'boolean' },
46
+ array: { type: 'string[]' },
47
+ object: { type: 'any' },
48
+ objectArray: { type: 'any[]' },
49
+ objectArrayArray: { type: 'any[][]' },
50
+ });
51
+ });
52
+ });
53
+
54
+ describe('Dependent_Mock', () => {
55
+ it('should create an instance with default values', () => {
56
+ const instance = new Dependent_Mock();
57
+
58
+ expect(instance).toBeTruthy();
59
+ expect(instance.dependencyId).toBeUndefined();
60
+ expect(instance.string).toBeUndefined();
61
+ expect(instance.number).toBeUndefined();
62
+ expect(instance.date).toBeUndefined();
63
+ expect(instance.boolean).toBeUndefined();
64
+ expect(instance.array).toBeUndefined();
65
+ expect(instance.object).toBeUndefined();
66
+ expect(instance.objectArray).toBeUndefined();
67
+ expect(instance.objectArrayArray).toBeUndefined();
68
+ });
69
+
70
+ it('should create an instance with provided values', () => {
71
+ const mockData: Dependent_Mock = {
72
+ dependencyId: 'dep123',
73
+ string: 'test',
74
+ number: 42,
75
+ date: new Date(),
76
+ boolean: true,
77
+ array: [ 'a', 'b' ],
78
+ object: { key: 'value' },
79
+ objectArray: [{ key: 'value' }],
80
+ objectArrayArray: [[{ key: 'value' }]],
81
+ };
82
+ const instance = new Dependent_Mock(mockData);
83
+
84
+ expect(instance).toEqual(jasmine.objectContaining(mockData));
85
+ });
86
+ });
87
+
88
+ xdescribe('DyFM_DataModel_Params for Dependent_Mock', () => {
89
+ it('should have correct dataName and properties', () => {
90
+ expect(dependent_mock_DataParams.dataName).toBe('dependentMock');
91
+ expect(dependent_mock_DataParams.properties).toEqual({
92
+ dependencyId: {
93
+ type: 'string',
94
+ unique: true,
95
+ required: true,
96
+ isDependencyHook: true,
97
+ dependencyDataName: dependency_mock_DataParams.dataName,
98
+ },
99
+ string: { type: 'string' },
100
+ number: { type: 'number' },
101
+ date: { type: 'Date' },
102
+ boolean: { type: 'boolean' },
103
+ array: { type: 'string[]' },
104
+ object: { type: 'any' },
105
+ objectArray: { type: 'any[]' },
106
+ objectArrayArray: { type: 'any[][]' },
107
+ });
108
+ });
109
+ });
@@ -0,0 +1,24 @@
1
+
2
+ import { EmailServiceCollection_Mock } from './email-service-collection.mock';
3
+ import { EmailService_Mock } from './email-service.mock';
4
+
5
+ describe('EmailServiceCollection_Mock', () => {
6
+ let emailServiceCollectionMock: EmailServiceCollection_Mock;
7
+
8
+ beforeEach(() => {
9
+ emailServiceCollectionMock = EmailServiceCollection_Mock.getInstance();
10
+ });
11
+
12
+ it('should create an instance of EmailServiceCollection_Mock', () => {
13
+ expect(emailServiceCollectionMock).toBeTruthy();
14
+ });
15
+
16
+ it('should return a singleton instance', () => {
17
+ const anotherInstance = EmailServiceCollection_Mock.getInstance();
18
+ expect(emailServiceCollectionMock).toBe(anotherInstance);
19
+ });
20
+
21
+ it('should have a test property of type EmailService_Mock', () => {
22
+ expect(emailServiceCollectionMock.test).toBeInstanceOf(EmailService_Mock);
23
+ });
24
+ });
@@ -0,0 +1,17 @@
1
+
2
+ import {
3
+ DyNTS_EmailService
4
+ } from '../../_services/core/email.service';
5
+ import { EmailService_Mock } from './email-service.mock';
6
+
7
+ describe('EmailService_Mock', () => {
8
+ let emailServiceMock: EmailService_Mock;
9
+
10
+ beforeEach(() => {
11
+ emailServiceMock = new EmailService_Mock();
12
+ });
13
+
14
+ it('should be an instance of DyNTS_EmailService', () => {
15
+ expect(emailServiceMock instanceof DyNTS_EmailService).toBeTrue();
16
+ });
17
+ });
@@ -0,0 +1,40 @@
1
+
2
+ import { DyFM_SocketEvent, DyFM_SocketEvent_Key } from '@futdevpro/fsm-dynamo/socket';
3
+
4
+ import {
5
+ DyNTS_SocketClientService_Params
6
+ } from '../socket/_models/socket-client-service-params.control-model';
7
+ import { SocketClient_Mock } from './socket-client.mock';
8
+
9
+ describe('SocketClient_Mock', () => {
10
+ let socketClientMock: SocketClient_Mock;
11
+
12
+ beforeEach(() => {
13
+ socketClientMock = SocketClient_Mock.getInstance();
14
+ });
15
+
16
+ it('should create an instance of SocketClient_Mock', () => {
17
+ expect(socketClientMock).toBeTruthy();
18
+ });
19
+
20
+ it('should return the correct incoming events', () => {
21
+ const events = socketClientMock.getIncomingEvents();
22
+
23
+ expect(events.length).toBe(1);
24
+ expect(events[0]).toEqual(jasmine.any(DyFM_SocketEvent));
25
+ expect(events[0].name).toBe('connect');
26
+ expect(events[0].eventKey).toBe(DyFM_SocketEvent_Key.connect);
27
+ expect(events[0].tasks.length).toBe(1);
28
+ expect(events[0].tasks[0]).toEqual(jasmine.any(Function));
29
+ });
30
+
31
+ it('should return the correct parameters', () => {
32
+ const params = socketClientMock.getParams();
33
+
34
+ expect(params).toEqual(jasmine.any(DyNTS_SocketClientService_Params));
35
+ expect(params.service).toBe('-test-socket-target-');
36
+ expect(params.name).toBe('socket-client-mock');
37
+ expect(params.port).toBe(30303);
38
+ expect(params.socketOptions.reconnection).toBeTrue();
39
+ });
40
+ });
@@ -1,8 +1,8 @@
1
1
 
2
2
  import { DyFM_SocketEvent, DyFM_SocketEvent_Key } from '@futdevpro/fsm-dynamo/socket';
3
3
 
4
- import {
5
- DyNTS_SocketClientService_Params
4
+ import {
5
+ DyNTS_SocketClientService_Params
6
6
  } from '../socket/_models/socket-client-service-params.control-model';
7
7
  import { DyNTS_SocketClient_ServiceBase } from '../socket/_services/socket-client.service';
8
8
 
@@ -24,8 +24,8 @@ export class SocketClient_Mock extends DyNTS_SocketClient_ServiceBase {
24
24
  tasks: [
25
25
  async (content: any, issuer: string) => {
26
26
  console.log('SocketClient_Mock: connect event received');
27
- }
28
- ]
27
+ },
28
+ ],
29
29
  }),
30
30
  ];
31
31
  }
@@ -0,0 +1,44 @@
1
+
2
+ import {
3
+ DyNTS_SocketServerService_Params
4
+ } from '../socket/_models/socket-server-service-params.control-model';
5
+ import { DyNTS_SocketServer_Mock } from './socket-server.mock';
6
+
7
+ describe('DyNTS_SocketServer_Mock', () => {
8
+ let socketServerMock: DyNTS_SocketServer_Mock;
9
+
10
+ beforeEach(() => {
11
+ socketServerMock = DyNTS_SocketServer_Mock.getInstance();
12
+ });
13
+
14
+ it('should return an instance of DyNTS_SocketServer_Mock', () => {
15
+ expect(socketServerMock).toBeInstanceOf(DyNTS_SocketServer_Mock);
16
+ });
17
+
18
+ it('should return correct service parameters', () => {
19
+ const params = socketServerMock.getServiceParams();
20
+
21
+ expect(params).toBeInstanceOf(DyNTS_SocketServerService_Params);
22
+ expect(params.name).toBe('test');
23
+ expect(params.port).toBe(9393);
24
+ });
25
+
26
+ it('should return an empty array for incoming events', () => {
27
+ const events = socketServerMock.getIncomingEvents();
28
+
29
+ expect(events).toEqual([]);
30
+ });
31
+
32
+ /* it('should return correct presence from subscription event content', async () => {
33
+ const mockSocketSubscription = { issuerId: 'testIssuerId' };
34
+ const mockSocket = {} as Socket;
35
+
36
+ const presence = await socketServerMock.getPresenceFromSubscriptionEventContent(
37
+ mockSocketSubscription, mockSocket);
38
+
39
+ expect(presence).toBeInstanceOf(DyNTS_SocketPresence);
40
+ expect(presence.issuerLocalId).toBe('testIssuerId');
41
+ expect(presence.sockets).toEqual([ mockSocket ]);
42
+ expect(presence.issuer).toBe('ISSUER socketServer_Mock');
43
+ }); */
44
+ });
@@ -0,0 +1,30 @@
1
+
2
+ import { DyFM_Log } from '@futdevpro/fsm-dynamo';
3
+ import { DyNTS_SocketClientService_Params } from './socket-client-service-params.control-model';
4
+
5
+ describe('DyNTS_SocketClientService_Params', () => {
6
+ it('should create an instance with default address', () => {
7
+ const params = new DyNTS_SocketClientService_Params({});
8
+
9
+ expect(params).toBeTruthy();
10
+ expect(params.address).toBe('ws://localhost');
11
+ });
12
+
13
+ it('should log information on creation', () => {
14
+ spyOn(DyFM_Log, 'H_info');
15
+
16
+ const params = new DyNTS_SocketClientService_Params({});
17
+
18
+ expect(DyFM_Log.H_info).toHaveBeenCalledWith(
19
+ 'DyNTS_SocketClientService_Params (test this with custom address!)',
20
+ 'ws://localhost'
21
+ );
22
+ });
23
+
24
+ xit('should allow overriding the address', () => {
25
+ const customAddress = 'ws://custom-address';
26
+ const params = new DyNTS_SocketClientService_Params({ address: customAddress });
27
+
28
+ expect(params.address).toBe(customAddress);
29
+ });
30
+ });
@@ -0,0 +1,33 @@
1
+
2
+ import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
3
+ import { DyNTS_SocketSecurity } from '../_enums/socket-security.enum';
4
+ import { DyNTS_SocketServerService_Params } from './socket-server-service-params.control-model';
5
+
6
+ describe('DyNTS_SocketServerService_Params', () => {
7
+ it('should create an instance with provided values', () => {
8
+ const params = {
9
+ name: 'TestSocket',
10
+ port: 8080,
11
+ security: DyNTS_SocketSecurity.secure,
12
+ };
13
+
14
+ const instance = new DyNTS_SocketServerService_Params(params);
15
+
16
+ expect(instance.name).toBe('TestSocket');
17
+ expect(instance.port).toBe(8080);
18
+ expect(instance.security).toBe(DyNTS_SocketSecurity.secure);
19
+ });
20
+
21
+ it('should use default security if not provided', () => {
22
+ const params = {
23
+ name: 'TestSocket',
24
+ port: 8080,
25
+ };
26
+
27
+ const instance = new DyNTS_SocketServerService_Params(params);
28
+
29
+ expect(instance.name).toBe('TestSocket');
30
+ expect(instance.port).toBe(8080);
31
+ expect(instance.security).toBe(DyNTS_global_settings.defaultSocketSecurity);
32
+ });
33
+ });
@@ -222,7 +222,7 @@ export abstract class DyNTS_SocketServerService<
222
222
  }));
223
223
  }
224
224
 
225
- this.subscriptionEvent.socketName = this.params.name;
225
+ this.subscriptionEvent.name = this.params.name;
226
226
  } else {
227
227
  DyFM_Log.error(
228
228
  'getPresenceFromSubscriptionEventContent is not set',
@@ -1,8 +1,8 @@
1
1
 
2
2
  import { DyFM_testModule_settings } from '@futdevpro/fsm-dynamo/test';
3
3
  import { DyNTS_RouteSecurity } from '../../_enums/route-security.enum';
4
- import {
5
- DyNTS_RoutingModule_Settings
4
+ import {
5
+ DyNTS_RoutingModule_Settings
6
6
  } from '../../_models/interfaces/routing-module-settings.interface';
7
7
  import { DyNTS_RoutingModule } from '../../_services/route/routing-module.service';
8
8
  import { DyNTS_Test_Controller } from './test.controller';
@@ -2,17 +2,17 @@
2
2
  import { Request, Response } from 'express';
3
3
 
4
4
  import { DyFM_RelativeDate } from '@futdevpro/fsm-dynamo';
5
- import {
6
- DyFM_usageModule_settings, DyFM_UsageSession
5
+ import {
6
+ DyFM_usageModule_settings, DyFM_UsageSession
7
7
  } from '@futdevpro/fsm-dynamo/usage';
8
8
 
9
9
  import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
10
+ import {
11
+ DyNTS_Endpoint_Params
12
+ } from '../../_models/control-models/endpoint-params.control-model';
10
13
  import { DyNTS_AuthService } from '../../_services/core/auth.service';
11
- import { DyNTS_Controller } from '../../_services/route/controller.service';
12
14
  import { DyNTS_GlobalService } from '../../_services/core/global.service';
13
- import {
14
- DyNTS_Endpoint_Params
15
- } from '../../_models/control-models/endpoint-params.control-model';
15
+ import { DyNTS_Controller } from '../../_services/route/controller.service';
16
16
  import { DyNTS_Usage_DataService } from './usage.data-service';
17
17
 
18
18
  export class DyNTS_Usage_Controller extends DyNTS_Controller {
@@ -106,10 +106,12 @@ export class DyNTS_Usage_Controller extends DyNTS_Controller {
106
106
  endpoint: DyFM_usageModule_settings.endPoints.getUsageData,
107
107
  preProcesses: [ this.authService.authenticate_tokenPerm_accUsageData ],
108
108
  tasks: [
109
- async (req: Request, res: Response): Promise<void> => {
109
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
110
110
  const range: DyFM_RelativeDate = req.params.range as DyFM_RelativeDate;
111
111
 
112
- const usageService = new DyNTS_Usage_DataService();
112
+ const usageService = new DyNTS_Usage_DataService({
113
+ issuer: issuer,
114
+ });
113
115
 
114
116
  await usageService.getUsage(range);
115
117
 
@@ -1,8 +1,11 @@
1
1
 
2
+ import { DyFM_Error, DyFM_RelativeDate, DyFM_Time } from '@futdevpro/fsm-dynamo';
3
+ import {
4
+ DyFM_DailyUsageData,
5
+ DyFM_UsageData,
6
+ DyFM_UsageSession, DyFM_usageSession_dataParams
7
+ } from '@futdevpro/fsm-dynamo/usage';
2
8
  import { Request } from 'express';
3
- import { DyFM_Error, DyFM_Time, DyFM_RelativeDate } from '@futdevpro/fsm-dynamo';
4
- import { DyFM_UsageSession, DyFM_usageSession_dataParams, DyFM_UsageData,
5
- DyFM_DailyUsageData } from '@futdevpro/fsm-dynamo/usage';
6
9
 
7
10
  import { DyNTS_DataService } from '../../_services/base/data.service';
8
11
  import { DyNTS_Shared } from '../../_services/shared.static-service';
@@ -12,18 +15,18 @@ export class DyNTS_Usage_DataService extends DyNTS_DataService<DyFM_UsageSession
12
15
  simplifiedDailyUsage: DyFM_DailyUsageData[] = [];
13
16
 
14
17
  constructor(
15
- set?: {
18
+ set: {
16
19
  usageSession?: DyFM_UsageSession,
17
20
  usageData?: DyFM_UsageData[],
18
- issuer?: string,
21
+ issuer: string,
19
22
  }
20
23
  ) {
21
24
  super(
22
25
  new DyFM_UsageSession(set?.usageSession),
23
26
  DyFM_usageSession_dataParams,
24
- set?.issuer
27
+ set.issuer
25
28
  );
26
- this.usageData = set?.usageData ? set?.usageData : [];
29
+ this.usageData = set?.usageData ?? [];
27
30
  }
28
31
 
29
32
  getLocationDataFromRequest(req: Request): void {
@@ -3,13 +3,16 @@ import {
3
3
  DyFM_AnyError,
4
4
  DyFM_Array,
5
5
  DyFM_Data_Params,
6
- DyFM_DataModel_Params, DyFM_DataProperty_Params,
6
+ DyFM_DataModel_Params,
7
+ DyFM_DataProperty_Params,
7
8
  DyFM_DBFilter,
8
9
  DyFM_Error,
9
- DyFM_Error_Settings, DyFM_ErrorLevel,
10
+ DyFM_Error_Settings,
11
+ DyFM_ErrorLevel,
10
12
  DyFM_Log,
11
13
  DyFM_Metadata,
12
- DyFM_SearchQuery
14
+ DyFM_SearchQuery,
15
+ DyFM_SearchResult
13
16
  } from '@futdevpro/fsm-dynamo';
14
17
 
15
18
  import { DyNTS_getArchivedDBName } from '../../_collections/archive.util';
@@ -27,16 +30,16 @@ import { DyNTS_DBService } from './db.service';
27
30
  * @example
28
31
  * export class UserMatchStatisticsService extends DyNTS_DataService<UserMatchStatistics> {
29
32
  * constructor(
30
- * set?: {
33
+ * set: {
31
34
  * data?: UserMatchStatistics,
32
- * issuer?: string,
35
+ * issuer: string,
33
36
  * }
34
37
  * ) {
35
38
  * super(
36
39
  * new UserMatchStatistics(set?.data),
37
40
  * userMatchStatisticsModelParams
38
41
  * );
39
- * this.issuer = set?.issuer;
42
+ * this.issuer = set.issuer;
40
43
  * }
41
44
  * }
42
45
  */
@@ -1083,10 +1086,15 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1083
1086
  }
1084
1087
  }
1085
1088
 
1086
- async searchData(query?: DyFM_SearchQuery<T>): Promise<T[]> {
1089
+ async searchData(query?: DyFM_SearchQuery<T>): Promise<DyFM_SearchResult<T>> {
1087
1090
  try {
1088
1091
  if (!query || Object.keys(query).length === 0) {
1089
- return await this.getAll();
1092
+ const allData: T[] = await this.getAll();
1093
+
1094
+ return {
1095
+ results: allData,
1096
+ total: allData.length,
1097
+ };
1090
1098
  }
1091
1099
 
1092
1100
  if (!query.filterBy) {
@@ -1094,7 +1102,12 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1094
1102
  }
1095
1103
 
1096
1104
  if (!query.page && !query.pageSize && !query.sortBy) {
1097
- return await this.dataDBService.find(query.filterBy);
1105
+ const dataFindResult: T[] = await this.dataDBService.find(query.filterBy);
1106
+
1107
+ return {
1108
+ results: dataFindResult,
1109
+ total: dataFindResult.length,
1110
+ };
1098
1111
  }
1099
1112
 
1100
1113
  if (!query.page) {
@@ -1110,12 +1123,18 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1110
1123
  query.sortBy = { __lastModified: -1 };
1111
1124
  }
1112
1125
 
1113
- return await this.dataDBService.findWithPaging(
1114
- query.filterBy,
1115
- query.page,
1116
- query.pageSize,
1117
- query.sortBy
1118
- );
1126
+ const dataFindWithPagingResult: T[] =
1127
+ await this.dataDBService.findWithPaging(
1128
+ query.filterBy,
1129
+ query.page,
1130
+ query.pageSize,
1131
+ query.sortBy
1132
+ );
1133
+
1134
+ return {
1135
+ results: dataFindWithPagingResult,
1136
+ total: dataFindWithPagingResult.length,
1137
+ };
1119
1138
  } catch (error) {
1120
1139
  throw new DyFM_Error({
1121
1140
  ...this._getDefaultErrorSettings('searchData', error),
@@ -104,7 +104,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
104
104
  throw new DyFM_Error({
105
105
  ...this._getDefaultErrorSettings('createData', error, issuer),
106
106
  errorCode: 'NTS-DBS-CD0',
107
- additionalContent: { data, dataModel },
107
+ additionalContent: {
108
+ data: data,
109
+ dataModel: this.dataModel,
110
+ },
108
111
  message:
109
112
  `createData failed, Create new "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
110
113
  issuer,
@@ -1034,6 +1037,12 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
1034
1037
  }
1035
1038
 
1036
1039
  Object.values(properties).forEach((property: DyFM_DataProperty_Params<any>): void => {
1040
+ if (!property) {
1041
+ DyFM_Log.warn(`property is undefined on ${this.dataParams.dbName} (NTS DB)`);
1042
+
1043
+ return;
1044
+ }
1045
+
1037
1046
  const beType = this.getBEType(property.type);
1038
1047
 
1039
1048
  if (
@@ -1,6 +1,4 @@
1
- import { DyFM_AnyError, DyFM_Error_Settings, DyFM_Error } from '@futdevpro/fsm-dynamo';
2
1
 
3
- import { DyNTS_global_settings } from '../../_collections/global-settings.const';
4
2
 
5
3
  /**
6
4
  *