Spaces:
Sleeping
Sleeping
File size: 4,746 Bytes
03549e5 |
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 |
package com.cs102.attendance;
import com.cs102.attendance.entity.*;
import com.cs102.attendance.enums.Method;
import com.cs102.attendance.enums.Status;
import com.cs102.attendance.repository.*;
import com.cs102.attendance.service.*;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalTime;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class DatabaseIntegrationTest {
@Autowired private StudentRepository studentRepository;
@Autowired private SessionRepository sessionRepository;
@Autowired private AttendanceRepository attendanceRepository;
@Autowired private FaceDataRepository faceDataRepository;
@Autowired private StudentService studentService;
@Autowired private SessionService sessionService;
@Test
@Transactional
public void testCompleteWorkflow() {
System.out.println("Testing complete database workflow...");
// 1. Test Student Creation
System.out.println("1. Creating student...");
Student student = studentService.enrol("CS001", "John Doe", "CS102", "Group A", "john@example.com", "123-456-7890");
assertNotNull(student.getId());
assertEquals("CS001", student.getCode());
System.out.println("Student created: " + student.getName());
// 2. Test Session Creation
System.out.println("2. Creating session...");
Session session = sessionService.createSession("Morning Lecture", LocalDate.now(), LocalTime.of(9, 0), LocalTime.of(11, 0));
assertNotNull(session.getId());
assertEquals("Morning Lecture", session.getName());
System.out.println("Session created: " + session.getName());
// 3. Test Face Data Upload
System.out.println("3. Uploading face data...");
FaceData faceData = studentService.uploadFaceImage(student.getId(), "http://example.com/face.jpg");
assertNotNull(faceData.getId());
assertEquals(student.getId(), faceData.getStudent().getId());
System.out.println("Face data uploaded");
// 4. Test Attendance Record
System.out.println("4. Creating attendance record...");
AttendanceRecord record = new AttendanceRecord(student, session, Status.PRESENT, Method.MANUAL);
record = attendanceRepository.save(record);
assertNotNull(record.getId());
assertEquals(Status.PRESENT, record.getStatus());
System.out.println("Attendance record created");
// 5. Test Repository Queries
System.out.println("5. Testing repository queries...");
var foundRecord = attendanceRepository.findBySessionAndStudent(session, student);
assertTrue(foundRecord.isPresent());
long presentCount = attendanceRepository.countBySessionAndStatus(session, Status.PRESENT);
assertEquals(1, presentCount);
System.out.println("Repository queries working");
// 6. Test Relationships
System.out.println("6. Testing entity relationships...");
Student savedStudent = studentRepository.findById(student.getId()).orElse(null);
assertNotNull(savedStudent);
assertEquals(1, savedStudent.getFaceData().size());
assertEquals(1, savedStudent.getAttendanceRecords().size());
System.out.println("Entity relationships working");
System.out.println("All database tests passed.");
}
@Test
public void testRepositoryBasicOperations() {
System.out.println("Testing basic repository operations...");
// Test counts
long studentCount = studentRepository.count();
long sessionCount = sessionRepository.count();
long attendanceCount = attendanceRepository.count();
long faceDataCount = faceDataRepository.count();
System.out.println("Current counts:");
System.out.println(" Students: " + studentCount);
System.out.println(" Sessions: " + sessionCount);
System.out.println(" Attendance Records: " + attendanceCount);
System.out.println(" Face Data: " + faceDataCount);
assertTrue(studentCount >= 0);
assertTrue(sessionCount >= 0);
assertTrue(attendanceCount >= 0);
assertTrue(faceDataCount >= 0);
System.out.println("Repository basic operations working");
}
} |