Skip to content

Commit fa0e74c

Browse files
authored
Enhance DefaultAttachmentsServiceHandler test coverage (#794)
1 parent ec79c93 commit fa0e74c

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/handler/AttachmentsServiceImplHandlerTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package com.sap.cds.feature.attachments.service.handler;
55

66
import static org.assertj.core.api.Assertions.assertThat;
7+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
8+
import static org.mockito.ArgumentMatchers.any;
79
import static org.mockito.Mockito.mock;
810
import static org.mockito.Mockito.verify;
911
import static org.mockito.Mockito.when;
@@ -19,6 +21,7 @@
1921
import com.sap.cds.reflect.CdsEntity;
2022
import com.sap.cds.services.changeset.ChangeSetListener;
2123
import com.sap.cds.services.impl.changeset.ChangeSetContextImpl;
24+
import java.util.Collections;
2225
import java.util.Map;
2326
import java.util.Objects;
2427
import org.junit.jupiter.api.AfterEach;
@@ -103,6 +106,38 @@ void malwareScannerRegisteredForEndOfTransaction() {
103106
verify(malwareScanProvider).getChangeSetListener(entity, "contentId");
104107
}
105108

109+
@Test
110+
void createAttachment_emptyAttachmentIds_handlesGracefully() {
111+
var createContext = AttachmentCreateEventContext.create();
112+
createContext.setAttachmentIds(Collections.emptyMap());
113+
createContext.setData(MediaData.create());
114+
createContext.setAttachmentEntity(mock(CdsEntity.class));
115+
ChangeSetContextImpl.open(false);
116+
117+
cut.createAttachment(createContext);
118+
119+
assertThat(createContext.getContentId())
120+
.as("contentId should be null when Attachments.ID key is missing from attachmentIds")
121+
.isNull();
122+
assertThat(createContext.isCompleted()).isTrue();
123+
}
124+
125+
@Test
126+
void afterCreateAttachment_noChangeSetContext_throws() {
127+
var entity = mock(CdsEntity.class);
128+
when(malwareScanProvider.getChangeSetListener(any(), any()))
129+
.thenReturn(mock(ChangeSetListener.class));
130+
var createContext = AttachmentCreateEventContext.create();
131+
createContext.setAttachmentIds(Map.of(Attachments.ID, "some-id"));
132+
createContext.setData(MediaData.create());
133+
createContext.setAttachmentEntity(entity);
134+
135+
cut.createAttachment(createContext);
136+
137+
assertThatThrownBy(() -> cut.afterCreateAttachment(createContext))
138+
.isInstanceOf(NullPointerException.class);
139+
}
140+
106141
private void closeChangeSetContext() throws Exception {
107142
var context = ChangeSetContextImpl.getCurrent();
108143
if (Objects.nonNull(context)) {

0 commit comments

Comments
 (0)