0e5cec927a
Red/Green/Refactor cycle is now mandatory for all development
104 lines
2.0 KiB
Markdown
104 lines
2.0 KiB
Markdown
# 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*
|