feat: decouple Laravel and CakePHP installers, remove SonarQube artifacts, and enforce complete unit testing standards

- Decouple framework installation: add install-laravel.sh and install-cakephp.sh, isolate skills and docs per framework, and auto-clean leftover artifacts
- Remove all SonarQube configs, templates, and references
- Enforce comprehensive test completeness: 100% public methods, edge cases, full branch coverage, exception paths, and state assertions
- Replace all placeholder assertions in PHPUnit and Pest templates with full realistic implementations
- Rename and update 10-comprehensive-test-coverage-guide.md
This commit is contained in:
2026-09-17 14:25:02 +07:00
parent 97f3833bf2
commit da1bd48444
33 changed files with 1004 additions and 594 deletions
+66 -30
View File
@@ -33,9 +33,14 @@
2. **Triết Lý Kiểm Thử Đỉnh Cao (AAA & Isolation)**:
- Đảm bảo tính cô lập tuyệt đối (Zero Leakage): mock toàn bộ external services, 3rd party APIs, queues, mails.
- Không over-mocking: giữ nguyên thực thể DTO, Value Object, Collection, Entity thật.
3. **Chế Độ Autopilot Khép Kín (`--all --run`)**:
3. **Viết File Test Đầy Đủ & Toàn Diện Tuyệt Đối (Completeness First)**:
- Viết trọn vẹn 100% public methods của class, không bỏ sót helper, hook hay method phụ.
- Bao phủ toàn diện 4 nhóm kịch bản: Happy Path, Edge Cases (null, empty, số âm, số 0, boundary), 100% nhánh điều kiện (`??`, `?:`, `if/else`, `match`, `try/catch`), và Exception handling.
- Kiểm tra chặt chẽ tác động thực tế: xác minh thay đổi DB (`assertDatabaseHas`), Event dispatch, Queue job, Mail.
- Tập trung thuần túy vào chất lượng file test đầy đủ, không sinh các file cấu hình rác hay phụ thuộc ngoài lề.
4. **Chế Độ Autopilot Khép Kín (`--all --run`)**:
- Tự động lập manifest quét toàn bộ dự án, viết test tuần tự không sót file, **viết đến đâu tự chạy test đến đó**, và **tự động sửa lỗi (Auto-Healing)** cho đến khi PASS 100%.
4. **Sẵn Sàng Cho Tương Lai & Architecture Testing**:
5. **Sẵn Sàng Cho Tương Lai & Architecture Testing**:
- Hỗ trợ đầy đủ tính năng mới nhất của **PHP 8.4+** (Property Hooks, Asymmetric Visibility).
- Tích hợp kiểm thử kiến trúc toàn dự án bằng Pest v3 / PHPUnit (`arch()`).
- Cung cấp sẵn file cấu hình CI/CD Quality Gate (GitHub Actions, GitLab CI) chặn merge PR nếu code coverage < 80%.
@@ -68,7 +73,7 @@ agent-unit-testing/
│ ├── 02-test-frameworks.md # So sánh PHPUnit vs Pest PHP
│ ├── 03-mocking-strategies.md # Toàn tập Mockery vs Fakes
│ ├── 05-anti-patterns.md # 12 lỗi cấm kỵ khi viết Unit Test
│ └── 10-sonarqube-100-percent-coverage.md # Chiến lược đạt 100% Coverage trên SonarQube
│ └── 10-comprehensive-test-coverage-guide.md # Chiến lược viết test đầy đủ & đạt độ phủ toàn diện
│
├── templates/ # Templates Mẫu Chuẩn
│ ├── cakephp/ # Templates PHPUnit & Config cho CakePHP
@@ -85,41 +90,69 @@ agent-unit-testing/
---
## 3. Cài Đặt Nhanh (1 Dòng Lệnh Duy Nhất)
## 3. Cài Đặt Nhanh (Tách Biệt Riêng Biệt Cho Từng Framework)
Bất kỳ ai muốn sử dụng bộ công cụ này (trên máy cá nhân, server hay container) **KHÔNG CẦN phải clone repository về máy**.
Bộ công cụ được thiết kế **hoàn toàn độc lập và tách biệt**: Khi cài đặt cho Laravel, toàn bộ skills và tài liệu của CakePHP sẽ không bao giờ xuất hiện (và ngược lại), giúp source code của bạn luôn gọn gàng và chuẩn xác 100%.
### 🌟 Cách 1: Cài trực tiếp vào Source Code của bạn (Khuyên dùng)
Mở Terminal, `cd` vào thư mục dự án của bạn (dù là **Laravel** hay **CakePHP**) và chạy:
### 🔴 Cách 1: Cài đặt chuyên biệt cho LARAVEL
Mở Terminal, `cd` vào thư mục dự án **Laravel** của bạn và chạy một trong hai lệnh sau:
```bash
cd /duong-dan/toi/source-code-cua-ban
cd /duong-dan/toi/du-an-laravel
# Cài đặt trực tiếp qua HTTPS công khai (không cần SSH key, không cần tài khoản):
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install.sh | bash
# Lệnh cài trực tiếp cho Laravel:
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install-laravel.sh | bash
# Hoặc qua install.sh kèm cờ --laravel:
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install.sh | bash -s -- --laravel
```
*(Nếu thư mục đang trống hoặc chưa có `composer.json`, thêm cờ `--force` vào cuối: `... | bash -s -- --force`)*.
🎯 **Cơ chế tự động:**
- Script tự động phát hiện dự án là **Laravel** hay **CakePHP**.
- Tự động cấy bộ Skills tương ứng vào `.claude/skills/`.
- Tự động đồng bộ tài liệu vào `.claude/testing-docs/`.
- Tự động tạo Smart Runner `./test-runner.sh` (tự nhận diện runner và Docker).
- Tự động thiết lập kết nối SQLite In-Memory an toàn (không làm mất dữ liệu dev).
🎯 **Kết quả sau khi cài đặt Laravel:**
- `.claude/skills/` chỉ chứa 4 skills Laravel (`laravel-unit-test`, `laravel-test-setup`, `laravel-test-review`, `laravel-mock-helper`).
- `.claude/testing-docs/` chỉ chứa cẩm nang 13 component Laravel và template PHPUnit/Pest của Laravel.
- Tự động dọn dẹp sạch sẽ bất kỳ file CakePHP nào nếu đã từng cài nhầm trước đó.
- Cấu hình SQLite in-memory `:memory:` an toàn trong `phpunit.xml`.
---
### ⚡ Cách 2: Cài Đặt Toàn Cục Cho Máy Tính (Global Mode)
Nếu muốn cài 1 lần duy nhất để dùng cho mọi dự án trên máy:
### 🔵 Cách 2: Cài đặt chuyên biệt cho CAKEPHP
Mở Terminal, `cd` vào thư mục dự án **CakePHP** của bạn và chạy một trong hai lệnh sau:
```bash
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install.sh | bash -s -- --global
cd /duong-dan/toi/du-an-cakephp
# Lệnh cài trực tiếp cho CakePHP:
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install-cakephp.sh | bash
# Hoặc qua install.sh kèm cờ --cakephp:
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install.sh | bash -s -- --cakephp
```
🎯 **Lợi ích:**
- Đăng ký sẵn các lệnh tiện ích trong Terminal: `laravel-test-init`, `cakephp-test-init`, `sg-test-init`.
- Mọi thư mục khi mở Claude Code đều nhận diện sẵn trọn bộ skills của cả 2 framework.
🎯 **Kết quả sau khi cài đặt CakePHP:**
- `.claude/skills/` chỉ chứa 4 skills CakePHP (`cakephp-unit-test`, `cakephp-test-setup`, `cakephp-test-review`, `cakephp-mock-helper`).
- `.claude/testing-docs/` chỉ chứa cẩm nang Table/Controller/Command CakePHP và templates của CakePHP.
- Tự động dọn dẹp sạch sẽ bất kỳ file Laravel nào nếu đã từng cài nhầm trước đó.
---
### ⚡ Cách 3: Tự Động Nhận Diện Framework (Auto-Detect)
Nếu bạn đứng trong source code và không truyền cờ, bộ cài sẽ tự động dò tìm:
```bash
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install.sh | bash
```
- Nếu thấy `artisan` hoặc `laravel/framework` -> Tự động kích hoạt chế độ **Laravel riêng biệt**.
- Nếu thấy `bin/cake` hoặc `cakephp/cakephp` -> Tự động kích hoạt chế độ **CakePHP riêng biệt**.
---
### 🌐 Cách 4: Cài Đặt Toàn Cục Cho Máy Tính (Global Mode)
```bash
# Cho máy chuyên code Laravel:
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install.sh | bash -s -- --global --laravel
# Cho máy chuyên code CakePHP:
curl -fsSL https://git.smartgift.io.vn/Smartgift-AI/agent-unit-testing/raw/branch/main/install.sh | bash -s -- --global --cakephp
```
---
@@ -168,7 +201,7 @@ AI sẽ tự động kiểm tra `composer.json`, thiết lập SQLite `:memory:`
#### 🔹 Bước 2: Sinh Unit Test Tự Động
##### 🏆 Cách Khuyên Dùng Cho Dự Án Lớn: Viết Tập Trung Theo Từng Tầng (Batch Mode)
Để tiết kiệm token và đạt độ phủ 100% từng nhánh SonarQube, hãy để AI viết sâu từng tầng:
Để tiết kiệm token và đảm bảo viết sâu, đầy đủ 100% từng logic và nhánh rẽ, hãy để AI viết sâu từng tầng:
```text
# 1. Viết toàn bộ tầng Services:
/laravel-unit-test app/Services/
@@ -207,7 +240,7 @@ AI tự động quét toàn bộ `app/`, viết test tuần tự, viết đến
---
#### 🔹 Bước 3: Chạy Test Ngoài Terminal & Đo Độ Phủ SonarQube
#### 🔹 Bước 3: Chạy Test Ngoài Terminal & Đo Độ Phủ (Coverage)
Quay ra terminal và chạy:
```bash
# Chạy toàn bộ test:
@@ -216,8 +249,11 @@ Quay ra terminal và chạy:
# Chạy 1 test cụ thể:
./test-runner.sh --filter=PaymentServiceTest
# Đo độ phủ code và xuất file cho SonarQube:
./test-runner.sh --coverage-clover coverage.xml
# Đo độ phủ code toàn diện (Coverage report trên Terminal):
./test-runner.sh --coverage
# Xuất báo cáo HTML trực quan:
./test-runner.sh --coverage-html html-coverage
```
---
@@ -355,8 +391,8 @@ bin/cake test app
# Chạy 1 test cụ thể:
./test-runner.sh --filter=ArticlesTableTest
# Đo độ phủ code SonarQube:
./test-runner.sh --coverage-clover coverage.xml
# Đo độ phủ code toàn diện:
./test-runner.sh --coverage
```
---