blob: 3d737a99d24e224672526209f4b53d1fac098578 [file] [log] [blame]
package com.pt5.pthouduan.controller;
import com.pt5.pthouduan.entity.Activity;
import com.pt5.pthouduan.service.ActivityService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
class ActivityControllerTest {
@Mock
private ActivityService activityService;
@InjectMocks
private ActivityController activityController;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
void getVisibleActivityPreviews_ShouldReturnPreviewList() {
Activity fullActivity = new Activity();
fullActivity.setActivityid(1);
fullActivity.setTitle("Test");
fullActivity.setContent("Content");
fullActivity.setAward(10);
fullActivity.setPhoto("/activity/photo.jpg");
fullActivity.setTime(LocalDateTime.now());
when(activityService.findByIsShow(0)).thenReturn(Arrays.asList(fullActivity));
List<Activity> result = activityController.getVisibleActivityPreviews();
assertEquals(1, result.size());
assertEquals("Test", result.get(0).getTitle());
assertEquals("/activity/photo.jpg", result.get(0).getPhoto());
}
@Test
void getVisibleActivities_ShouldReturnList() {
Activity activity = new Activity();
activity.setActivityid(1);
activity.setTitle("Visible Activity");
when(activityService.findByIsShow(0)).thenReturn(List.of(activity));
List<Activity> result = activityController.getVisibleActivities();
assertEquals(1, result.size());
assertEquals("Visible Activity", result.get(0).getTitle());
}
@Test
void createActivity_ShouldReturnTrue_WhenSaved() {
when(activityService.save(any(Activity.class))).thenReturn(true);
boolean result = activityController.createActivity(
"New Title", "New Content", null, 0, 5
);
assertTrue(result);
verify(activityService).save(any(Activity.class));
}
@Test
void deleteActivity_ShouldReturnTrue_WhenDeleted() {
when(activityService.removeById(1)).thenReturn(true);
boolean result = activityController.deleteActivity(1);
assertTrue(result);
verify(activityService).removeById(1);
}
@Test
void getAllActivities_ShouldReturnAllActivities() {
Activity a1 = new Activity();
a1.setTitle("A1");
Activity a2 = new Activity();
a2.setTitle("A2");
when(activityService.list()).thenReturn(List.of(a1, a2));
List<Activity> result = activityController.getAllActivities();
assertEquals(2, result.size());
assertEquals("A1", result.get(0).getTitle());
assertEquals("A2", result.get(1).getTitle());
}
@Test
void searchActivitiesByTitle_ShouldReturnMatchingActivities() {
Activity match = new Activity();
match.setTitle("Matched");
when(activityService.searchByTitle("Match")).thenReturn(List.of(match));
List<Activity> result = activityController.searchActivitiesByTitle("Match");
assertEquals(1, result.size());
assertEquals("Matched", result.get(0).getTitle());
}
@Test
void updateActivity_ShouldReturnTrue_WhenSuccessful() {
Activity existing = new Activity();
existing.setActivityid(1);
existing.setTitle("Old");
when(activityService.getById(1)).thenReturn(existing);
when(activityService.updateById(any(Activity.class))).thenReturn(true);
boolean result = activityController.updateActivity(1, "New Title", "New Content", null, 1, 10);
assertTrue(result);
verify(activityService).updateById(any(Activity.class));
}
@Test
void updateActivity_ShouldReturnFalse_WhenActivityNotFound() {
when(activityService.getById(999)).thenReturn(null);
boolean result = activityController.updateActivity(999, "Title", "Content", null, 0, 0);
assertFalse(result);
}
}