-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDatabaseControllerTest.java
More file actions
157 lines (111 loc) · 4.65 KB
/
DatabaseControllerTest.java
File metadata and controls
157 lines (111 loc) · 4.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.UoB.AILearningTool;
import com.UoB.AILearningTool.model.ChatEntity;
import com.UoB.AILearningTool.model.UserEntity;
import com.UoB.AILearningTool.repository.ChatRepository;
import com.UoB.AILearningTool.repository.UserRepository;
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.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
public class DatabaseControllerTest {
@Mock
private UserRepository userRepository;
@Mock
private ChatRepository chatRepository;
@InjectMocks
private DatabaseController databaseController;
private UserEntity testUser;
private ChatEntity testChat;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
testUser = new UserEntity("testUser", "password123");
testChat = new ChatEntity(testUser, "Hello, this is a test message.", "thread123");
}
@Test
void testGetUser_UserExists() {
// Given
when(userRepository.findById("testUser")).thenReturn(Optional.of(testUser));
// When
UserEntity result = databaseController.getUser("testUser");
// Then
assertNotNull(result);
assertEquals("testUser", result.getUsername());
verify(userRepository, times(1)).findById("testUser");
}
@Test
void testGetUser_UserDoesNotExist() {
// Given
when(userRepository.findById("nonExistentUser")).thenReturn(Optional.empty());
// When
UserEntity result = databaseController.getUser("nonExistentUser");
// Then
assertNull(result);
verify(userRepository, times(1)).findById("nonExistentUser");
}
@Test
void testAddUser_UserAlreadyExists() {
// Given
when(userRepository.findByUsername("testUser")).thenReturn(Optional.of(testUser));
// When
boolean result = databaseController.addUser("testUser", "newPassword");
// Then
assertFalse(result);
verify(userRepository, times(1)).findByUsername("testUser");
}
@Test
void testAddUser_UserDoesNotExist() {
// Given
when(userRepository.findByUsername("newUser")).thenReturn(Optional.empty());
// When
boolean result = databaseController.addUser("newUser", "newPassword");
// Then
assertTrue(result);
verify(userRepository, times(1)).findByUsername("newUser");
verify(userRepository, times(1)).save(any(UserEntity.class));
}
@Test
void testCreateChat_Success() {
when(userRepository.findBySessionID("validSessionID")).thenReturn(Optional.of(testUser));
ChatEntity result = databaseController.createChat("validSessionID", "Initial message");
assertNotNull(result);
assertEquals("Initial message", new org.json.JSONArray(result.getMessageHistory(testUser).toString())
.getJSONObject(0)
.getString("content"));
verify(chatRepository, times(1)).save(any(ChatEntity.class));
}
@Test
void testCreateChat_Failure_UserNotFound() {
when(userRepository.findBySessionID("invalidSessionID")).thenReturn(Optional.empty());
ChatEntity result = databaseController.createChat("invalidSessionID", "Initial message");
assertNull(result);
verify(chatRepository, times(0)).save(any(ChatEntity.class));
}
@Test
void testDeleteChat_Success() {
when(chatRepository.findById("chat123")).thenReturn(Optional.of(testChat));
boolean result = databaseController.deleteChat(testUser, "chat123");
assertTrue(result);
verify(chatRepository, times(1)).deleteById("chat123");
}
@Test
void testDeleteChat_Failure_ChatNotFound() {
when(chatRepository.findById("nonExistentChat")).thenReturn(Optional.empty());
boolean result = databaseController.deleteChat(testUser, "nonExistentChat");
assertFalse(result);
verify(chatRepository, times(0)).deleteById("nonExistentChat");
}
@Test
void testDeleteChat_Failure_NotOwner() {
UserEntity anotherUser = new UserEntity("anotherUser", "password123");
ChatEntity anotherChat = new ChatEntity(anotherUser, "Another user's message", "thread123");
when(chatRepository.findById("chat123")).thenReturn(Optional.of(anotherChat));
boolean result = databaseController.deleteChat(testUser, "chat123");
assertFalse(result);
verify(chatRepository, times(0)).deleteById("chat123");
}
}