blob: 3d737a99d24e224672526209f4b53d1fac098578 [file] [log] [blame]
ym923977239c2025-06-06 17:36:14 +08001package com.pt5.pthouduan.controller;
2
3import com.pt5.pthouduan.entity.Activity;
4import com.pt5.pthouduan.service.ActivityService;
5import org.junit.jupiter.api.BeforeEach;
6import org.junit.jupiter.api.Test;
7import org.mockito.InjectMocks;
8import org.mockito.Mock;
9import org.mockito.MockitoAnnotations;
10
11import java.time.LocalDateTime;
12import java.util.Arrays;
13import java.util.List;
14
15import static org.junit.jupiter.api.Assertions.*;
16import static org.mockito.ArgumentMatchers.any;
17import static org.mockito.Mockito.*;
18
19class ActivityControllerTest {
20
21 @Mock
22 private ActivityService activityService;
23
24 @InjectMocks
25 private ActivityController activityController;
26
27 @BeforeEach
28 void setUp() {
29 MockitoAnnotations.openMocks(this);
30 }
31
32 @Test
33 void getVisibleActivityPreviews_ShouldReturnPreviewList() {
34 Activity fullActivity = new Activity();
35 fullActivity.setActivityid(1);
36 fullActivity.setTitle("Test");
37 fullActivity.setContent("Content");
38 fullActivity.setAward(10);
39 fullActivity.setPhoto("/activity/photo.jpg");
40 fullActivity.setTime(LocalDateTime.now());
41
42 when(activityService.findByIsShow(0)).thenReturn(Arrays.asList(fullActivity));
43
44 List<Activity> result = activityController.getVisibleActivityPreviews();
45
46 assertEquals(1, result.size());
47 assertEquals("Test", result.get(0).getTitle());
48 assertEquals("/activity/photo.jpg", result.get(0).getPhoto());
49 }
50
51 @Test
52 void getVisibleActivities_ShouldReturnList() {
53 Activity activity = new Activity();
54 activity.setActivityid(1);
55 activity.setTitle("Visible Activity");
56
57 when(activityService.findByIsShow(0)).thenReturn(List.of(activity));
58
59 List<Activity> result = activityController.getVisibleActivities();
60
61 assertEquals(1, result.size());
62 assertEquals("Visible Activity", result.get(0).getTitle());
63 }
64
65 @Test
66 void createActivity_ShouldReturnTrue_WhenSaved() {
67 when(activityService.save(any(Activity.class))).thenReturn(true);
68
69 boolean result = activityController.createActivity(
70 "New Title", "New Content", null, 0, 5
71 );
72
73 assertTrue(result);
74 verify(activityService).save(any(Activity.class));
75 }
76
77 @Test
78 void deleteActivity_ShouldReturnTrue_WhenDeleted() {
79 when(activityService.removeById(1)).thenReturn(true);
80
81 boolean result = activityController.deleteActivity(1);
82
83 assertTrue(result);
84 verify(activityService).removeById(1);
85 }
86
87 @Test
88 void getAllActivities_ShouldReturnAllActivities() {
89 Activity a1 = new Activity();
90 a1.setTitle("A1");
91
92 Activity a2 = new Activity();
93 a2.setTitle("A2");
94
95 when(activityService.list()).thenReturn(List.of(a1, a2));
96
97 List<Activity> result = activityController.getAllActivities();
98
99 assertEquals(2, result.size());
100 assertEquals("A1", result.get(0).getTitle());
101 assertEquals("A2", result.get(1).getTitle());
102 }
103
104 @Test
105 void searchActivitiesByTitle_ShouldReturnMatchingActivities() {
106 Activity match = new Activity();
107 match.setTitle("Matched");
108
109 when(activityService.searchByTitle("Match")).thenReturn(List.of(match));
110
111 List<Activity> result = activityController.searchActivitiesByTitle("Match");
112
113 assertEquals(1, result.size());
114 assertEquals("Matched", result.get(0).getTitle());
115 }
116
117 @Test
118 void updateActivity_ShouldReturnTrue_WhenSuccessful() {
119 Activity existing = new Activity();
120 existing.setActivityid(1);
121 existing.setTitle("Old");
122
123 when(activityService.getById(1)).thenReturn(existing);
124 when(activityService.updateById(any(Activity.class))).thenReturn(true);
125
126 boolean result = activityController.updateActivity(1, "New Title", "New Content", null, 1, 10);
127
128 assertTrue(result);
129 verify(activityService).updateById(any(Activity.class));
130 }
131
132 @Test
133 void updateActivity_ShouldReturnFalse_WhenActivityNotFound() {
134 when(activityService.getById(999)).thenReturn(null);
135
136 boolean result = activityController.updateActivity(999, "Title", "Content", null, 0, 0);
137
138 assertFalse(result);
139 }
140}