Skip to content

Commit ff44833

Browse files
smoghe-bwclaude
andcommitted
Fix endpoint test coverage gaps and remove redundant test file
- Remove endpoint-event.test.ts (redundant; EndpointEvent is a type alias for Endpoints) - Fix endpoint-response.test.ts to use Endpoint type instead of Endpoints, add devices field assertions - Add devices field assertions to create-endpoint-response-data.test.ts - Add devices field assertions to create-endpoint-response.test.ts - Add creationTimestamp assertions on devices in endpoint.test.ts - Add type and timestamp assertions for second endpoint in list-endpoints-response.test.ts - Replace conditional guard with explicit length assertion in endpoints-api.test.ts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent e5a197f commit ff44833

7 files changed

Lines changed: 69 additions & 37 deletions

tests/unit/api/endpoints-api.test.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,12 @@ describe('EndpointsApi', () => {
5858
expect(data.page.totalElements).toBeNumber();
5959
expect(data.errors).toBeInstanceOf(Array);
6060

61-
if (data.data.length > 0) {
62-
expect(data.data[0].endpointId).toBeString();
63-
expect(data.data[0].type).toBeOneOf(Object.values(EndpointTypeEnum));
64-
expect(data.data[0].status).toBeOneOf(Object.values(EndpointStatusEnum));
65-
expect(data.data[0].creationTimestamp).toBeDateString();
66-
expect(data.data[0].expirationTimestamp).toBeDateString();
67-
}
61+
expect(data.data.length).toBeGreaterThan(0);
62+
expect(data.data[0].endpointId).toBeString();
63+
expect(data.data[0].type).toBeOneOf(Object.values(EndpointTypeEnum));
64+
expect(data.data[0].status).toBeOneOf(Object.values(EndpointStatusEnum));
65+
expect(data.data[0].creationTimestamp).toBeDateString();
66+
expect(data.data[0].expirationTimestamp).toBeDateString();
6867
});
6968
});
7069

tests/unit/models/create-endpoint-response-data.test.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,29 @@
11
import { CreateEndpointResponseData } from '../../../models/create-endpoint-response-data';
2+
import { Device } from '../../../models/device';
3+
import { DeviceStatusEnum } from '../../../models/device-status-enum';
24
import { EndpointStatusEnum } from '../../../models/endpoint-status-enum';
35
import { EndpointTypeEnum } from '../../../models/endpoint-type-enum';
46

57
describe('CreateEndpointResponseData', () => {
68
test('should include all endpoint fields and token', () => {
9+
const devices: Device[] = [
10+
{
11+
deviceId: 'dev-1',
12+
deviceName: 'Chrome Browser',
13+
status: DeviceStatusEnum.Connected,
14+
creationTimestamp: '2024-02-18T10:31:00Z'
15+
}
16+
];
17+
718
const responseData: CreateEndpointResponseData = {
819
endpointId: 'ep-123456',
920
type: EndpointTypeEnum.Webrtc,
1021
status: EndpointStatusEnum.Connected,
1122
creationTimestamp: '2024-02-18T10:30:00Z',
1223
expirationTimestamp: '2024-02-19T10:30:00Z',
1324
token: 'xxxxx.yyyyy.zzzzz',
14-
tag: 'endpoint-tag'
25+
tag: 'endpoint-tag',
26+
devices
1527
};
1628

1729
expect(responseData.endpointId).toBe('ep-123456');
@@ -23,5 +35,10 @@ describe('CreateEndpointResponseData', () => {
2335
expect(new Date(responseData.expirationTimestamp).toISOString()).toBe('2024-02-19T10:30:00.000Z');
2436
expect(responseData.token).toBe('xxxxx.yyyyy.zzzzz');
2537
expect(responseData.tag).toBe('endpoint-tag');
38+
expect(responseData.devices).toHaveLength(1);
39+
expect(responseData.devices![0].deviceId).toBe('dev-1');
40+
expect(responseData.devices![0].deviceName).toBe('Chrome Browser');
41+
expect(responseData.devices![0].status).toBe(DeviceStatusEnum.Connected);
42+
expect(responseData.devices![0].creationTimestamp).toBe('2024-02-18T10:31:00Z');
2643
});
2744
});

tests/unit/models/create-endpoint-response.test.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { CreateEndpointResponse } from '../../../models/create-endpoint-response';
22
import { CreateEndpointResponseData } from '../../../models/create-endpoint-response-data';
3+
import { Device } from '../../../models/device';
4+
import { DeviceStatusEnum } from '../../../models/device-status-enum';
35
import { EndpointStatusEnum } from '../../../models/endpoint-status-enum';
46
import { EndpointTypeEnum } from '../../../models/endpoint-type-enum';
57
import { Link } from '../../../models/link';
@@ -12,14 +14,24 @@ describe('CreateEndpointResponse', () => {
1214
href: 'http://api.example.com/endpoints/ep-123456'
1315
};
1416

17+
const devices: Device[] = [
18+
{
19+
deviceId: 'dev-1',
20+
deviceName: 'Chrome Browser',
21+
status: DeviceStatusEnum.Connected,
22+
creationTimestamp: '2024-02-18T10:31:00Z'
23+
}
24+
];
25+
1526
const responseData: CreateEndpointResponseData = {
1627
endpointId: 'ep-123456',
1728
type: EndpointTypeEnum.Webrtc,
1829
status: EndpointStatusEnum.Connected,
1930
creationTimestamp: '2024-02-18T10:30:00Z',
2031
expirationTimestamp: '2024-02-19T10:30:00Z',
2132
token: 'xxxxx.yyyyy.zzzzz',
22-
tag: 'webrtc-endpoint'
33+
tag: 'webrtc-endpoint',
34+
devices
2335
};
2436

2537
const error: ModelError = {
@@ -43,6 +55,11 @@ describe('CreateEndpointResponse', () => {
4355
expect(response.data.tag).toBe('webrtc-endpoint');
4456
expect(new Date(response.data.creationTimestamp).getFullYear()).toBe(2024);
4557
expect(new Date(response.data.expirationTimestamp).getFullYear()).toBe(2024);
58+
expect(response.data.devices).toHaveLength(1);
59+
expect(response.data.devices![0].deviceId).toBe('dev-1');
60+
expect(response.data.devices![0].deviceName).toBe('Chrome Browser');
61+
expect(response.data.devices![0].status).toBe(DeviceStatusEnum.Connected);
62+
expect(response.data.devices![0].creationTimestamp).toBe('2024-02-18T10:31:00Z');
4663
expect(response.errors).toHaveLength(1);
4764
expect(response.errors[0].code).toBe(400);
4865
expect(response.errors[0].description).toContain('endpointId');

tests/unit/models/endpoint-event.test.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

tests/unit/models/endpoint-response.test.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { EndpointResponse } from '../../../models/endpoint-response';
2-
import { Endpoints } from '../../../models/endpoints';
2+
import { Endpoint } from '../../../models/endpoint';
3+
import { Device } from '../../../models/device';
4+
import { DeviceStatusEnum } from '../../../models/device-status-enum';
35
import { EndpointStatusEnum } from '../../../models/endpoint-status-enum';
46
import { EndpointTypeEnum } from '../../../models/endpoint-type-enum';
57
import { Link } from '../../../models/link';
@@ -12,13 +14,23 @@ describe('EndpointResponse', () => {
1214
href: 'http://api.example.com/endpoints/ep-123456'
1315
};
1416

15-
const endpoint: Endpoints = {
17+
const devices: Device[] = [
18+
{
19+
deviceId: 'dev-1',
20+
deviceName: 'Chrome Browser',
21+
status: DeviceStatusEnum.Connected,
22+
creationTimestamp: '2024-02-18T10:31:00Z'
23+
}
24+
];
25+
26+
const endpoint: Endpoint = {
1627
endpointId: 'ep-123456',
1728
type: EndpointTypeEnum.Webrtc,
1829
status: EndpointStatusEnum.Connected,
1930
creationTimestamp: '2024-02-18T10:30:00Z',
2031
expirationTimestamp: '2024-02-19T10:30:00Z',
21-
tag: 'test-endpoint'
32+
tag: 'test-endpoint',
33+
devices
2234
};
2335

2436
const error: ModelError = {
@@ -41,6 +53,11 @@ describe('EndpointResponse', () => {
4153
expect(new Date(response.data.creationTimestamp).getFullYear()).toBe(2024);
4254
expect(new Date(response.data.expirationTimestamp).getFullYear()).toBe(2024);
4355
expect(response.data.tag).toBe('test-endpoint');
56+
expect(response.data.devices).toHaveLength(1);
57+
expect(response.data.devices![0].deviceId).toBe('dev-1');
58+
expect(response.data.devices![0].deviceName).toBe('Chrome Browser');
59+
expect(response.data.devices![0].status).toBe(DeviceStatusEnum.Connected);
60+
expect(response.data.devices![0].creationTimestamp).toBe('2024-02-18T10:31:00Z');
4461
expect(response.errors).toHaveLength(1);
4562
expect(response.errors[0].code).toBe(400);
4663
expect(response.errors[0].description).toBe('Invalid endpoint configuration');

tests/unit/models/endpoint.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ describe('Endpoint', () => {
4242
expect(endpoint.devices![0].deviceId).toBe('dev-1');
4343
expect(endpoint.devices![0].deviceName).toBe('Chrome Browser');
4444
expect(endpoint.devices![0].status).toBe(DeviceStatusEnum.Connected);
45+
expect(endpoint.devices![0].creationTimestamp).toBe('2024-02-18T10:31:00Z');
4546
expect(endpoint.devices![1].deviceId).toBe('dev-2');
4647
expect(endpoint.devices![1].status).toBe(DeviceStatusEnum.Disconnected);
48+
expect(endpoint.devices![1].creationTimestamp).toBe('2024-02-18T10:32:00Z');
4749
});
4850
});

tests/unit/models/list-endpoints-response.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,12 @@ describe('ListEndpointsResponse', () => {
6262
expect(response.data[0].endpointId).toBe('ep-001');
6363
expect(response.data[0].tag).toBe('primary-endpoint');
6464
expect(response.data[1].endpointId).toBe('ep-002');
65+
expect(response.data[1].type).toBe(EndpointTypeEnum.Webrtc);
6566
expect(response.data[1].status).toBe(EndpointStatusEnum.Disconnected);
67+
expect(new Date(response.data[1].creationTimestamp).getFullYear()).toBe(2024);
68+
expect(new Date(response.data[1].creationTimestamp).toISOString()).toBe('2024-02-18T10:30:00.000Z');
69+
expect(new Date(response.data[1].expirationTimestamp).getFullYear()).toBe(2024);
70+
expect(new Date(response.data[1].expirationTimestamp).toISOString()).toBe('2024-02-19T10:30:00.000Z');
6671
expect(response.errors).toHaveLength(1);
6772
expect(response.errors[0].code).toBe(500);
6873
expect(response.errors[0].description).toBe('Internal server error');

0 commit comments

Comments
 (0)