feat: add analytics backend
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package com.emotion.service;
|
||||
|
||||
import com.emotion.dto.request.analytics.AnalyticsEventBatchRequest;
|
||||
import com.emotion.dto.request.analytics.AnalyticsEventRequest;
|
||||
import com.emotion.service.impl.AnalyticsServiceImpl;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class AnalyticsServiceTest {
|
||||
|
||||
@Test
|
||||
void safeEventNameAllowsSnakeCase() {
|
||||
assertTrue(AnalyticsServiceImpl.isSafeEventName("script_generate_success"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void safeEventNameRejectsUnsafeCharacters() {
|
||||
assertFalse(AnalyticsServiceImpl.isSafeEventName("script.generate"));
|
||||
assertFalse(AnalyticsServiceImpl.isSafeEventName("<script>"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void batchRequestShapeCanHoldValidEvent() {
|
||||
AnalyticsEventRequest event = new AnalyticsEventRequest();
|
||||
event.setEventName("page_view");
|
||||
event.setEventType("page");
|
||||
event.setPagePath("/pages/main/index");
|
||||
event.setOccurredAt(LocalDateTime.now());
|
||||
event.setProperties(Map.of("tab", "script"));
|
||||
|
||||
AnalyticsEventBatchRequest request = new AnalyticsEventBatchRequest();
|
||||
request.setAnonymousId("anon_test");
|
||||
request.setSessionId("session_test");
|
||||
request.setEvents(List.of(event));
|
||||
|
||||
assertEquals("session_test", request.getSessionId());
|
||||
assertEquals(1, request.getEvents().size());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user