test: add FcmServiceTest unit test
This commit is contained in:
parent
2d0cf0f1a5
commit
8aa3db88f9
@ -0,0 +1,127 @@
|
|||||||
|
package com.walkguide.service;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.DisplayName;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test untuk FcmService.
|
||||||
|
*
|
||||||
|
* FcmService saat ini berjalan dalam mode LOG-ONLY (tidak mengirim FCM nyata),
|
||||||
|
* sehingga test di sini memastikan:
|
||||||
|
* 1. Metode tidak melempar exception dalam kondisi normal
|
||||||
|
* 2. Metode gracefully handle token kosong / null
|
||||||
|
* 3. sendHighPriority mendelegasikan ke sendToToken tanpa error
|
||||||
|
*/
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
@DisplayName("FcmService Unit Tests")
|
||||||
|
class FcmServiceTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
FcmService fcmService;
|
||||||
|
|
||||||
|
private static final String VALID_TOKEN = "fcm-token-abc123xyz";
|
||||||
|
private static final String TITLE = "Test Title";
|
||||||
|
private static final String BODY = "Test Body";
|
||||||
|
private static final Map<String, String> DATA = Map.of("type", "TEST");
|
||||||
|
|
||||||
|
// ===== sendToToken TESTS =====
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendToToken - token valid harus tidak throw exception")
|
||||||
|
void sendToToken_validToken_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken(VALID_TOKEN, TITLE, BODY, DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendToToken - token null harus tidak throw exception (skip gracefully)")
|
||||||
|
void sendToToken_nullToken_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken(null, TITLE, BODY, DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendToToken - token kosong/blank harus tidak throw exception")
|
||||||
|
void sendToToken_blankToken_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken("", TITLE, BODY, DATA));
|
||||||
|
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken(" ", TITLE, BODY, DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendToToken - data null harus tidak throw exception")
|
||||||
|
void sendToToken_nullData_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken(VALID_TOKEN, TITLE, BODY, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendToToken - data kosong (empty map) harus tidak throw exception")
|
||||||
|
void sendToToken_emptyData_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken(VALID_TOKEN, TITLE, BODY, Map.of()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendToToken - title null harus tidak throw exception")
|
||||||
|
void sendToToken_nullTitle_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken(VALID_TOKEN, null, BODY, DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendToToken - body null harus tidak throw exception")
|
||||||
|
void sendToToken_nullBody_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendToToken(VALID_TOKEN, TITLE, null, DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===== sendHighPriority TESTS =====
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendHighPriority - token valid harus tidak throw exception")
|
||||||
|
void sendHighPriority_validToken_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendHighPriority(VALID_TOKEN, TITLE, BODY, DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendHighPriority - token null harus tidak throw exception")
|
||||||
|
void sendHighPriority_nullToken_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendHighPriority(null, TITLE, BODY, DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendHighPriority - token kosong harus tidak throw exception")
|
||||||
|
void sendHighPriority_blankToken_shouldNotThrow() {
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendHighPriority("", TITLE, BODY, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("sendHighPriority - data SOS payload besar harus ditangani tanpa error")
|
||||||
|
void sendHighPriority_sosBigPayload_shouldNotThrow() {
|
||||||
|
Map<String, String> sosData = Map.of(
|
||||||
|
"type", "SOS_TRIGGERED",
|
||||||
|
"sosId", "12345",
|
||||||
|
"userId", "99",
|
||||||
|
"lat", "-7.257472",
|
||||||
|
"lng", "112.752088",
|
||||||
|
"address", "Jl. Kenangan No. 1, Surabaya"
|
||||||
|
);
|
||||||
|
|
||||||
|
assertThatNoException().isThrownBy(() ->
|
||||||
|
fcmService.sendHighPriority(VALID_TOKEN, "SOS Darurat!", "Pengguna membutuhkan bantuan", sosData));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user