Untitled
unknown
plain_text
2 years ago
9.0 kB
6
Indexable
class YourClassNameTest {
@Mock
private YourDependency yourDependency;
private YourClassName yourClass;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
yourClass = new YourClassName(yourDependency);
}
@Test
void testIsExtraDataExistInS3_WhenMultipartFilesLengthIsNotOne() {
// Arrange
int featureId = 1;
MultipartFile[] multipartFiles = new MultipartFile[0];
ExtraDataType type = ExtraDataType.TYPE1;
// Act
boolean result = yourClass.isExtraDataExistInS3(featureId, multipartFiles, type);
// Assert
assertFalse(result);
verify(yourDependency, never()).isExtraDataExistInS3(anyString());
}
@Test
void testIsExtraDataExistInS3_WhenIOExceptionOccurs() throws IOException {
// Arrange
int featureId = 1;
MultipartFile[] multipartFiles = {new MockMultipartFile("file.txt", new byte[0])};
ExtraDataType type = ExtraDataType.TYPE1;
when(yourDependency.isExtraDataExistInS3(anyString())).thenReturn(true);
// Act
boolean result = yourClass.isExtraDataExistInS3(featureId, multipartFiles, type);
// Assert
assertFalse(result);
verify(yourDependency, never()).isExtraDataExistInS3(anyString());
}
@Test
void testIsExtraDataExistInS3_WhenSuccess() throws IOException {
// Arrange
int featureId = 1;
MultipartFile[] multipartFiles = {new MockMultipartFile("file.txt", new byte[0])};
ExtraDataType type = ExtraDataType.TYPE1;
when(yourDependency.isExtraDataExistInS3(anyString())).thenReturn(true);
// Act
boolean result = yourClass.isExtraDataExistInS3(featureId, multipartFiles, type);
// Assert
assertTrue(result);
ArgumentCaptor<String> filePathCaptor = ArgumentCaptor.forClass(String.class);
verify(yourDependency).isExtraDataExistInS3(filePathCaptor.capture());
String expectedFilePath = getFilePath(featureId, "file.txt", type);
assertEquals(expectedFilePath, filePathCaptor.getValue());
}
}
////////////////
private MockMultipartFile createMockMultipartFile(String filename, String content) {
byte[] contentBytes = content.getBytes();
InputStream inputStream = new ByteArrayInputStream(contentBytes);
return new MockMultipartFile("file", filename, null, inputStream);
}
//////////////////////
class YourClassNameTest {
@Mock
private ProceedingJoinPoint joinPoint;
@Mock
private FeatureExtraDataService featureExtraDataService;
private YourClassName yourClass;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
yourClass = new YourClassName(featureExtraDataService);
}
@Test
void testLogFeatureExtraDataUploaded_WhenExtraDataExists() throws Throwable {
// Arrange
int featureId = 1;
MultipartFile[] multipartFiles = {createMockMultipartFile("test.txt", "Test file content")};
ExtraDataType type = ExtraDataType.TYPE_A;
String endpointUrl = "http://example.com/endpoint";
when(featureExtraDataService.isExtraDataExistInS3(eq(featureId), eq(multipartFiles), eq(type))).thenReturn(true);
when(joinPoint.proceed()).thenReturn(endpointUrl);
// Act
String result = yourClass.logFeatureExtraDataUploaded(joinPoint, featureId, multipartFiles, type);
// Assert
assertEquals(endpointUrl, result);
ArgumentCaptor<Integer> featureIdCaptor = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<String> dataTypeCaptor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<ChangeType> changeTypeCaptor = ArgumentCaptor.forClass(ChangeType.class);
ArgumentCaptor<String> detailCaptor = ArgumentCaptor.forClass(String.class);
verify(featureExtraDataService).isExtraDataExistInS3(featureIdCaptor.capture(), any(), eq(type));
verify(joinPoint).proceed();
verify(featureExtraDataService).saveChangeLog(eq(featureId), isNull(), dataTypeCaptor.capture(),
changeTypeCaptor.capture(), detailCaptor.capture());
assertEquals(featureId, featureIdCaptor.getValue());
assertEquals(DataType.EXTRA_DATA.toString(), dataTypeCaptor.getValue());
assertEquals(ChangeType.UPDATED, changeTypeCaptor.getValue());
Map<String, String> expectedDetail = new HashMap<>();
expectedDetail.put("extraDataName", "endpoint");
assertEquals(expectedDetail.toString(), detailCaptor.getValue());
}
@Test
void testLogFeatureExtraDataUploaded_WhenExtraDataDoesNotExist() throws Throwable {
// Arrange
int featureId = 1;
MultipartFile[] multipartFiles = {createMockMultipartFile("test.txt", "Test file content")};
ExtraDataType type = ExtraDataType.TYPE_A;
String endpointUrl = "http://example.com/endpoint";
when(featureExtraDataService.isExtraDataExistInS3(eq(featureId), eq(multipartFiles), eq(type))).thenReturn(false);
when(joinPoint.proceed()).thenReturn(endpointUrl);
// Act
String result = yourClass.logFeatureExtraDataUploaded(joinPoint, featureId, multipartFiles, type);
// Assert
assertEquals(endpointUrl, result);
ArgumentCaptor<Integer> featureIdCaptor = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<String> dataTypeCaptor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<ChangeType> changeTypeCaptor = ArgumentCaptor.forClass(ChangeType.class);
ArgumentCaptor<String> detailCaptor = ArgumentCaptor.forClass(String.class);
verify(featureExtraDataService).isExtraDataExistInS3(featureIdCaptor.capture(), any(), eq(type));
verify(joinPoint).proceed();
verify(featureExtraDataService).saveChangeLog(eq(featureId), isNull(), dataTypeCaptor.capture(),
changeTypeCaptor.capture(), detailCaptor.capture());
assertEquals(featureId, featureIdCaptor.getValue());
assertEquals(DataType.EXTRA_DATA.toString(), dataTypeCaptor.getValue());
assertEquals(ChangeType.CREATED, changeTypeCaptor.getValue());
Map<String, String> expectedDetail = new HashMap<>();
expectedDetail.put("extraDataName", "endpoint");
assertEquals(expectedDetail.toString(), detailCaptor.getValue());
}
private MockMultipartFile createMockMultipartFile(String filename, String content) {
byte[] contentBytes = content.getBytes();
return new MockMultipartFile("file", filename, null, contentBytes);
}
}
//////////////////////////
class YourClassNameTest {
@Mock
private JoinPoint joinPoint;
@Mock
private FeatureExtraDataService featureExtraDataService;
private YourClassName yourClass;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
yourClass = new YourClassName(featureExtraDataService);
}
@Test
void testLogFeatureExtraDataDeleted_WhenSuccessIsTrue() {
// Arrange
int featureId = 1;
String extraDataName = "extraData1";
boolean success = true;
// Act
yourClass.logFeatureExtraDataDeleted(joinPoint, featureId, extraDataName, success);
// Assert
ArgumentCaptor<Integer> featureIdCaptor = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<DataType> dataTypeCaptor = ArgumentCaptor.forClass(DataType.class);
ArgumentCaptor<ChangeType> changeTypeCaptor = ArgumentCaptor.forClass(ChangeType.class);
ArgumentCaptor<String> detailCaptor = ArgumentCaptor.forClass(String.class);
verify(featureExtraDataService).saveChangeLog(featureIdCaptor.capture(), isNull(), dataTypeCaptor.capture(),
changeTypeCaptor.capture(), detailCaptor.capture());
assertEquals(featureId, featureIdCaptor.getValue());
assertEquals(DataType.EXTRA_DATA, dataTypeCaptor.getValue());
assertEquals(ChangeType.DELETED, changeTypeCaptor.getValue());
Map<String, String> expectedDetail = new HashMap<>();
expectedDetail.put("extraDataName", extraDataName);
assertEquals(expectedDetail.toString(), detailCaptor.getValue());
}
@Test
void testLogFeatureExtraDataDeleted_WhenSuccessIsFalse() {
// Arrange
int featureId = 2;
String extraDataName = "extraData2";
boolean success = false;
// Act
yourClass.logFeatureExtraDataDeleted(joinPoint, featureId, extraDataName, success);
// Assert
verify(featureExtraDataService, Mockito.never()).saveChangeLog(anyInt(), any(), any(), any(), any());
}
}Editor is loading...
Leave a Comment