docs: add TDD coding conventions
Red/Green/Refactor cycle is now mandatory for all development
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
# Gravl Coding Conventions
|
||||
|
||||
## Utvecklingsmetodik
|
||||
|
||||
### Red/Green TDD (OBLIGATORISKT)
|
||||
|
||||
All ny kod måste följa TDD-cykeln:
|
||||
|
||||
```
|
||||
🔴 RED → 🟢 GREEN → 🔄 REFACTOR
|
||||
```
|
||||
|
||||
#### 1. 🔴 RED - Skriv test först
|
||||
```javascript
|
||||
// test/feature.test.js
|
||||
describe('Feature', () => {
|
||||
it('should do expected behavior', async () => {
|
||||
const result = await feature.doSomething();
|
||||
expect(result).toBe(expected);
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
**Kör testet - det MÅSTE faila!**
|
||||
```bash
|
||||
npm test -- --grep "Feature"
|
||||
# ❌ FAIL (detta är rätt!)
|
||||
```
|
||||
|
||||
#### 2. 🟢 GREEN - Minimal implementation
|
||||
Skriv bara tillräckligt med kod för att testet passerar:
|
||||
```javascript
|
||||
// src/feature.js
|
||||
export function doSomething() {
|
||||
return expected; // Minimal lösning
|
||||
}
|
||||
```
|
||||
|
||||
**Kör testet igen:**
|
||||
```bash
|
||||
npm test -- --grep "Feature"
|
||||
# ✅ PASS
|
||||
```
|
||||
|
||||
#### 3. 🔄 REFACTOR - Förbättra
|
||||
Nu kan du:
|
||||
- Refaktorera för clean code
|
||||
- Extrahera funktioner
|
||||
- Förbättra namngivning
|
||||
- Ta bort duplicering
|
||||
|
||||
**Kör testerna kontinuerligt:**
|
||||
```bash
|
||||
npm test
|
||||
# ✅ Alla test måste fortfarande passa
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Teststruktur
|
||||
|
||||
```
|
||||
/workspace/gravl/
|
||||
├── src/
|
||||
│ └── components/
|
||||
├── server/
|
||||
│ └── routes/
|
||||
└── test/
|
||||
├── unit/ # Enhetstester
|
||||
├── integration/ # API-tester
|
||||
└── e2e/ # End-to-end
|
||||
```
|
||||
|
||||
## Namnkonventioner
|
||||
|
||||
### Tester
|
||||
- `[feature].test.js` - Unit tests
|
||||
- `[feature].integration.test.js` - Integration tests
|
||||
- Describe-block: Noun (vad testas)
|
||||
- It-block: "should [verb] [expected outcome]"
|
||||
|
||||
### Commits
|
||||
```
|
||||
test: add failing test for [feature]
|
||||
feat: implement [feature] to pass tests
|
||||
refactor: clean up [feature] implementation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow för kodningsagenter
|
||||
|
||||
1. **Få uppgift** från Gravl PM
|
||||
2. **Läs spec** i docs/current-task.md
|
||||
3. **Skriv failing test** - visa PM
|
||||
4. **Implementera** tills test passerar
|
||||
5. **Refaktorera** om nödvändigt
|
||||
6. **Commit** med rätt prefix
|
||||
7. **Rapportera** till PM
|
||||
|
||||
---
|
||||
|
||||
*Uppdaterad: 2026-02-28*
|
||||
Reference in New Issue
Block a user