Skip to content

Commit eb3f25d

Browse files
committed
feat: add unit tests for SclAutoAlignmentEventHandler and SclAutoAlignmentEventRequest
Signed-off-by: Nora Blomaard <n.blomaard@gmail.com>
1 parent be262b5 commit eb3f25d

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// SPDX-FileCopyrightText: 2026 Alliander N.V.
2+
// SPDX-License-Identifier: Apache-2.0
3+
package org.lfenergy.compas.scl.auto.alignment.websocket.v1.event;
4+
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.extension.ExtendWith;
7+
import org.lfenergy.compas.scl.auto.alignment.rest.v1.model.SclAutoAlignRequest;
8+
import org.lfenergy.compas.scl.auto.alignment.rest.v1.model.SclAutoAlignResponse;
9+
import org.lfenergy.compas.scl.auto.alignment.service.SclAutoAlignmentService;
10+
import org.lfenergy.compas.scl.auto.alignment.websocket.v1.event.model.SclAutoAlignmentEventRequest;
11+
import org.mockito.ArgumentCaptor;
12+
import org.mockito.InjectMocks;
13+
import org.mockito.Mock;
14+
import org.mockito.junit.jupiter.MockitoExtension;
15+
16+
import jakarta.websocket.RemoteEndpoint;
17+
import jakarta.websocket.Session;
18+
19+
import static org.junit.jupiter.api.Assertions.*;
20+
import static org.mockito.Mockito.*;
21+
22+
@ExtendWith(MockitoExtension.class)
23+
class SclAutoAlignmentEventHandlerTest {
24+
25+
@Mock
26+
private SclAutoAlignmentService sclAutoAlignmentService;
27+
28+
@InjectMocks
29+
private SclAutoAlignmentEventHandler handler;
30+
31+
@Test
32+
void mapWebsocketsEvent_WhenCalled_ThenSclAutoAlignResponseReturned() {
33+
String who = "test-user";
34+
SclAutoAlignRequest alignRequest = mock(SclAutoAlignRequest.class);
35+
String sclData = "<SCL>...</SCL>";
36+
var substationNames = java.util.Collections.singletonList("substation");
37+
38+
when(alignRequest.getSclData()).thenReturn(sclData);
39+
when(alignRequest.getSubstationNames()).thenReturn(substationNames);
40+
when(sclAutoAlignmentService.updateSCL(sclData, substationNames, who)).thenReturn("<SCL>updated</SCL>");
41+
42+
Session session = mockSession();
43+
SclAutoAlignmentEventRequest eventRequest = new SclAutoAlignmentEventRequest(session, alignRequest, who);
44+
45+
handler.mapWebsocketsEvent(eventRequest);
46+
47+
SclAutoAlignResponse response = verifyResponse(session, SclAutoAlignResponse.class);
48+
assertEquals("<SCL>updated</SCL>", response.getSclData());
49+
verify(sclAutoAlignmentService).updateSCL(sclData, substationNames, who);
50+
}
51+
52+
private Session mockSession() {
53+
Session session = mock(Session.class);
54+
RemoteEndpoint.Async async = mock(RemoteEndpoint.Async.class);
55+
when(session.getAsyncRemote()).thenReturn(async);
56+
return session;
57+
}
58+
59+
private <T> T verifyResponse(Session session, Class<T> responseClass) {
60+
verify(session).getAsyncRemote();
61+
ArgumentCaptor<T> captor = ArgumentCaptor.forClass(responseClass);
62+
verify(session.getAsyncRemote()).sendObject(captor.capture());
63+
return captor.getValue();
64+
}
65+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.lfenergy.compas.scl.auto.alignment.websocket.v1.event.model;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.lfenergy.compas.scl.auto.alignment.rest.v1.model.SclAutoAlignRequest;
5+
6+
import jakarta.websocket.Session;
7+
8+
import static org.junit.jupiter.api.Assertions.*;
9+
import static org.mockito.Mockito.*;
10+
11+
class SclAutoAlignmentEventRequestTest {
12+
13+
@Test
14+
void constructorAndGetters_ShouldReturnValues() {
15+
Session session = mock(Session.class);
16+
SclAutoAlignRequest request = mock(SclAutoAlignRequest.class);
17+
String who = "test-user";
18+
19+
SclAutoAlignmentEventRequest eventRequest = new SclAutoAlignmentEventRequest(session, request, who);
20+
21+
assertSame(session, eventRequest.getSession(), "Session should match");
22+
assertSame(request, eventRequest.getRequest(), "Request should match");
23+
assertEquals(who, eventRequest.getWho(), "Who should match");
24+
}
25+
26+
@Test
27+
void constructor_AllowsNullArguments() {
28+
SclAutoAlignmentEventRequest eventRequest = new SclAutoAlignmentEventRequest(null, null, null);
29+
assertNull(eventRequest.getSession(), "Session should be null");
30+
assertNull(eventRequest.getRequest(), "Request should be null");
31+
assertNull(eventRequest.getWho(), "Who should be null");
32+
}
33+
}

0 commit comments

Comments
 (0)