feat: add comprehensive unit testing support for CakePHP

- Add 4 CakePHP Claude Code skills: cakephp-unit-test, cakephp-test-setup, cakephp-test-review, cakephp-mock-helper
- Add 11 CakePHP PHPUnit component templates (Table, Entity, Controller, Service, Command, Component, Middleware, Mailer, Form, Behavior, Helper)
- Add CakePHP configs (phpunit.xml.dist, app_local.test.php for SQLite in-memory)
- Add comprehensive CakePHP documentation and component guides
- Update test-runner.sh and installer to auto-detect Laravel and CakePHP
- Add CakePHP CI/CD templates for GitHub Actions and GitLab CI
- Update system prompt, verification checklist, and README with dedicated guides
This commit is contained in:
2026-09-14 10:19:40 +07:00
parent 0dce2ef812
commit 7425b263d5
28 changed files with 2210 additions and 356 deletions
+109
View File
@@ -0,0 +1,109 @@
---
name: cakephp-test-setup
description: Tự động quét kiểm tra môi trường, dependencies, database config (Datasources.test) và docker để chuẩn bị viết Unit Test cho bất kỳ dự án CakePHP nào.
---
# Skill: CakePHP Test Environment Setup & Health Check
Skill này chịu trách nhiệm chuẩn bị "Bước 0" cho dự án CakePHP trước khi bắt đầu viết bất kỳ Unit/Integration Test nào.
## Cách kích hoạt
- **Chế độ kiểm tra (Dry-run / Health-Check)**:
```text
/cakephp-test-setup
```
- **Chế độ tự động cài đặt gói thiếu (Auto-Install Mode)**:
```text
/cakephp-test-setup --install
```
## Quy trình thực hiện (Execution Workflow)
Khi người dùng kích hoạt lệnh `/cakephp-test-setup`, Agent sẽ tuần tự thực hiện các bước sau:
### Bước 1: Quét `composer.json` & Nhận Diện CakePHP Version
1. Đọc file `composer.json` tại thư mục gốc của dự án.
2. Xác định:
- **Phiên bản CakePHP**:
- `cakephp/cakephp: ^5.0`: Yêu cầu PHP >= 8.1
- `cakephp/cakephp: ^4.0`: Yêu cầu PHP >= 7.4
- `cakephp/cakephp: ^3.0`: Legacy CakePHP 3.x
- **Test Runner & Dependencies**:
- `phpunit/phpunit`
- `cakephp/cakephp-codesniffer` (nếu có)
- `mockery/mockery` (hỗ trợ nâng cao)
- `fakerphp/faker`
3. Nếu phát hiện thiếu thư viện hoặc cờ `--install`:
- Kích hoạt lệnh cài đặt qua môi trường tương ứng:
```bash
# Nếu dùng Docker Compose (service app / web / php):
docker compose exec -T app composer require --dev mockery/mockery fakerphp/faker --with-all-dependencies
# Nếu chạy Local:
composer require --dev mockery/mockery fakerphp/faker --with-all-dependencies
```
### Bước 2: Kiểm tra Cấu hình Testing Database (`Datasources.test`)
1. Kiểm tra file `config/app_local.php` hoặc `config/app.php`.
2. Xác thực cấu hình `Datasources.test`:
- Đảm bảo kết nối `test` được tách biệt với `default` (production/dev).
- Khuyên dùng SQLite In-Memory hoặc SQLite file test để đảm bảo **tốc độ cao và an toàn tuyệt đối 100% cho dữ liệu dev**:
```php
'test' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Sqlite',
'database' => ':memory:', // hoặc TMP . 'test.sqlite'
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
],
```
3. Kiểm tra file cấu hình PHPUnit (`phpunit.xml` hoặc `phpunit.xml.dist`):
- Đảm bảo có suite `<testsuite name="app">` trỏ vào `tests/TestCase`.
- Có extension / listener fixture (`Cake\TestSuite\Fixture\FixtureExtension` cho CakePHP 4.3+ / 5.x).
### Bước 3: Phát hiện Môi trường Docker / Runtime
1. Kiểm tra `bin/cake` -> Đảm bảo có quyền thực thi (`chmod +x bin/cake`).
2. Kiểm tra `docker-compose.yml` -> Dò tìm service chạy CakePHP (`app`, `web`, `php`, `backend`) -> Lệnh chuẩn:
```bash
docker compose exec -T app bin/cake test app
# Hoặc:
docker compose exec -T app vendor/bin/phpunit
```
3. Nếu chạy Local: Kiểm tra PHP CLI có đủ extension `intl` (`php -m | grep intl`) và `pdo_sqlite` (`php -m | grep sqlite`).
### Bước 4: Chạy Smoke Test (Kiểm tra thử nghiệm)
1. Chạy thử nghiệm một test case mẫu sẵn có hoặc test mặc định:
```bash
./test-runner.sh
# hoặc bin/cake test app
```
2. Nếu test PASS: Báo cáo môi trường đã sẵn sàng 100%.
3. Nếu test FAIL: Đưa ra chẩn đoán chính xác nguyên nhân (thiếu driver SQLite, sai database credentials, thiếu fixture strategy,...).
---
## Mẫu báo cáo đầu ra cho người dùng:
```markdown
### 📋 BÁO CÁO MÔI TRƯỜNG TEST CAKEPHP (HEALTH CHECK)
1. **Framework & Dependencies**:
- CakePHP: 4.5.3 (hoặc 5.0.x) | PHP: 8.2
- Test Runner: PHPUnit 10.5
- Mocking: Mockery 1.6 (Đã cài)
- Fixture Strategy: TransactionStrategy / FixtureExtension [OK]
2. **Cấu hình Môi trường Test**:
- Datasource Test: SQLite (:memory:) [OK - An toàn, không đụng dữ liệu dev]
- phpunit.xml: Đã cấu hình suite `app` trỏ tới `tests/TestCase`
3. **Môi trường thực thi**:
- Docker Service: `app` (hoặc `web`) đang hoạt động
- Lệnh chạy test chuẩn: `docker compose exec -T app bin/cake test app`
4. **Kết quả Smoke Test**:
- Trạng thái: ✅ PASSED
🎉 **Môi trường CakePHP đã hoàn toàn sẵn sàng cho việc sinh Unit Test!**
```