feat: add iteration one attendance workflows
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# Test Evidence: Current business-date attendance state
|
||||
|
||||
- **Test type:** Unit
|
||||
- **Requirement IDs:** `ATT-005`, `I1-UI-03`
|
||||
- **Scenario IDs:** `I1-ATT-03`, `I1-ATT-04`
|
||||
- **Test class/method:** `com.lab.labtimesheet.feature.attendance.service.AttendanceApplicationServiceTest`
|
||||
- **Implementation commit:** `pending (committed with this evidence)`
|
||||
|
||||
## Protected behavior
|
||||
|
||||
The public attendance service reports an eligible Intern's current business-date
|
||||
state as not checked in, checked in, or checked out without exposing attendance
|
||||
repositories/entities to dashboard consumers. Ineligible Interns are rejected.
|
||||
|
||||
## Test method
|
||||
|
||||
A fixed Clock, seeded policy, and mocked Spring Data/account boundaries drive the
|
||||
real application service through all three persisted-record shapes. A separate
|
||||
case makes account eligibility false and asserts the attendance rejection.
|
||||
|
||||
## Hand-derived expected result
|
||||
|
||||
No record means `NOT_CHECKED_IN`; a record without checkout means `CHECKED_IN`;
|
||||
a record with checkout means `CHECKED_OUT`. An ineligible user produces
|
||||
`INACTIVE_INTERN` instead of a state.
|
||||
|
||||
## RED
|
||||
|
||||
**Command**
|
||||
|
||||
```text
|
||||
export JAVA_HOME=/opt/homebrew/opt/openjdk@25
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
./mvnw -Dtest=AttendancePersistenceIntegrationTest test
|
||||
```
|
||||
|
||||
**Observed result**
|
||||
|
||||
```text
|
||||
cannot find symbol: class AttendanceCurrentState
|
||||
Tests did not run because the requested public DTO/service behavior did not exist.
|
||||
BUILD FAILURE
|
||||
Process exited 1.
|
||||
```
|
||||
|
||||
## GREEN
|
||||
|
||||
**Command**
|
||||
|
||||
```text
|
||||
export JAVA_HOME=/opt/homebrew/opt/openjdk@25
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
./mvnw -Dtest=AttendanceApplicationServiceTest test
|
||||
```
|
||||
|
||||
**Observed result**
|
||||
|
||||
```text
|
||||
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
|
||||
BUILD SUCCESS
|
||||
Process exited 0.
|
||||
```
|
||||
|
||||
## Affected suite
|
||||
|
||||
**Command and result**
|
||||
|
||||
```text
|
||||
export JAVA_HOME=/opt/homebrew/opt/openjdk@25
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
export DOCKER_HOST=unix:///Users/sechmachine/.orbstack/run/docker.sock
|
||||
./mvnw -Dtest='*Attendance*Test' test
|
||||
Tests run: 26, Failures: 0, Errors: 0, Skipped: 0
|
||||
BUILD SUCCESS
|
||||
Process exited 0.
|
||||
```
|
||||
|
||||
## External-test boundaries
|
||||
|
||||
The unit test does not prove PostgreSQL persistence, account fixture creation,
|
||||
Spring transaction behavior, MVC rendering, or dashboard composition.
|
||||
Reference in New Issue
Block a user