feat: add iteration one attendance workflows
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# Test Evidence: Attendance feature package and JPA boundaries
|
||||
|
||||
- **Test type:** Unit
|
||||
- **Requirement IDs:** `ARC-005`, `OPS-020`
|
||||
- **Scenario IDs:** `I1-ATT-01` through `I1-ATT-05` structural gate
|
||||
- **Test class/method:** `com.lab.labtimesheet.architecture.AttendanceLayerStructureTest`
|
||||
- **Implementation commit:** `pending (committed with this evidence)`
|
||||
|
||||
## Protected behavior
|
||||
|
||||
Attendance/calendar code lives under one `feature.attendance` boundary with
|
||||
controller, model, model.dto, model.entity, repository, service, and exception
|
||||
layers. The superseded feature-first and global-layer classes are absent, and
|
||||
application services do not depend on `JdbcTemplate`.
|
||||
Attendance does not map or expose the account feature's `app_users` or
|
||||
`intern_profiles` tables.
|
||||
|
||||
## Test method
|
||||
|
||||
Plain JUnit loads the required public classes by authoritative package name,
|
||||
proves superseded class names are absent, verifies the query repository is a
|
||||
Spring Data repository, reflects over application-service dependencies, and
|
||||
proves that attendance-owned account entities/repositories cannot be loaded.
|
||||
|
||||
## Hand-derived expected result
|
||||
|
||||
Seven representative classes load from `feature.attendance` internal layers;
|
||||
the old `attendance.AttendanceService` and global `controller.AttendanceController`
|
||||
do not load; query access implements Spring Data `Repository`; no checked
|
||||
application service has a `JdbcTemplate` field.
|
||||
The four forbidden attendance-owned account entity/repository class names do
|
||||
not load.
|
||||
|
||||
## RED
|
||||
|
||||
**Command**
|
||||
|
||||
```text
|
||||
export JAVA_HOME=/opt/homebrew/opt/openjdk@25
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
./mvnw -Dtest=AttendanceLayerStructureTest test
|
||||
```
|
||||
|
||||
**Observed result**
|
||||
|
||||
```text
|
||||
ClassNotFoundException: com.lab.labtimesheet.feature.attendance.controller.AttendanceController
|
||||
ClassNotFoundException: com.lab.labtimesheet.feature.attendance.repository.AttendanceQueryRepository
|
||||
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0
|
||||
BUILD FAILURE
|
||||
Process exited 1 because the implementation still used the superseded package layout.
|
||||
```
|
||||
|
||||
The account-boundary assertion was separately observed RED after the final
|
||||
feature package move:
|
||||
|
||||
```text
|
||||
./mvnw -Dtest=AttendanceLayerStructureTest test
|
||||
AttendanceLayerStructureTest.attendanceDoesNotMapOrExposeAccountFeatureTables:
|
||||
Expecting code to raise a throwable.
|
||||
Tests run: 3, Failures: 1, Errors: 0, Skipped: 0
|
||||
BUILD FAILURE
|
||||
Process exited 1 because attendance still owned shadow AppUser/InternProfile entity and repository types.
|
||||
```
|
||||
|
||||
## GREEN
|
||||
|
||||
**Command**
|
||||
|
||||
```text
|
||||
export JAVA_HOME=/opt/homebrew/opt/openjdk@25
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
./mvnw -Dtest=AttendanceLayerStructureTest test
|
||||
```
|
||||
|
||||
**Observed result**
|
||||
|
||||
```text
|
||||
Tests run: 3, 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
|
||||
|
||||
This test proves source/package and dependency shape, not Spring context startup,
|
||||
PostgreSQL queries, MVC behavior, or the final platform account-service wiring.
|
||||
Reference in New Issue
Block a user