diff --git a/docs/CODING-CONVENTIONS.md b/docs/CODING-CONVENTIONS.md new file mode 100644 index 0000000..a07ece5 --- /dev/null +++ b/docs/CODING-CONVENTIONS.md @@ -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*