Files
api_test/docs/COLECTION_GUIDE.md
kankys 7eeebc63cd docs: add comprehensive external links to all guides
- Add Mistral AI, Vibe Code, and Bruno links to USING_VIBE_AGENTS.md
- Add Bruno, Chai, Mistral AI links to COLECTION_GUIDE.md
- Add Bruno, Chai, Mistral AI, Vibe CLI links to CRUD_CHAINING_GUIDE.md
- Organize links by category (Bruno, Testování, Vibe & Mistral AI)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-09-16 07:01:44 +02:00

265 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📚 Průvodce vytvářením nové testovací kolekce
Tento návod vysvětluje, jak přidat **novou testovací kolekci** do `apiTest/` tak, aby byla **automaticky detekována** jak lokálně (`npm run test:all`), tak v CI/CD pipeline.
---
## 🎯 Rychlý start
### 1. Vytvoř základní strukturu
```bash
# Nahraď <název-kolekce> názvem své nové kolekce
mkdir -p apiTest/<název-kolekce>/Endpoint1
mkdir -p apiTest/<název-kolekce>/Endpoint2
```
### 2. Přidej konfigurační soubor kolekce
Vytvoř `apiTest/<název-kolekce>/opencollection.yml`:
```yaml
opencollection: 1.0.0
info:
name: <Název Tvé Kolekce>
type: collection
request:
auth: inherit
bundled: false
extensions:
bruno:
ignore:
- node_modules
- .git
```
### 3. Vytvoř složky pro endpointy
Pro každý typ požadavků vytvoř složku s `folder.yml`:
```yaml
# apiTest/<název-kolekce>/Endpoint1/folder.yml
info:
name: Endpoint1
type: folder
seq: 1
request:
auth: inherit
```
### 4. Přidej testovací soubory
Vytvoř `.yml` soubor pro každý test:
```yaml
# apiTest/<název-kolekce>/Endpoint1/Název-testu.yml
info:
name: Název testu
type: http
seq: 1
http:
method: GET # nebo POST, PUT, DELETE
url: https://api.example.com/endpoint
auth: inherit
headers:
- name: Content-Type
value: application/json
runtime:
scripts:
- type: tests
code: |-
const status = res.getStatus();
const body = res.getBody();
test("Status code is 200", function() {
expect(status).to.equal(200);
});
test("Response is valid", function() {
expect(body).to.not.be.empty;
});
settings:
encodeUrl: true
timeout: 10000
followRedirects: true
maxRedirects: 5
```
---
## 📁 Příklady struktury
### Příklad 1: Veřejné API (bez backendu)
```
apiTest/JsonPlaceholder/
├── opencollection.yml
├── Users/
│ ├── folder.yml
│ └── Get-all-users.yml
└── Posts/
├── folder.yml
├── Get-post-by-ID.yml
└── Create-new-post.yml
```
### Příklad 2: Lokální API (s backendem)
```
apiTest/MyLocalAPI/
├── opencollection.yml
├── GET/
│ ├── folder.yml
│ ├── Get-all-items.yml
│ └── Get-item-by-ID.yml
└── POST/
├── folder.yml
└── Create-new-item.yml
```
---
## 🚀 Automatická detekce
### Lokálně
Skript `npm run test:all` **automaticky najde všechny kolekce** v `apiTest/` a spustí jejich testy.
### V CI/CD (GitHub Actions)
Pipeline používá stejný princip a spustí testy pro všechny kolekce.
---
## ⚙️ Důležité poznámky
### 1. Bruno CLI požadavky
- **Kořenová složka kolekce** musí obsahovat `opencollection.yml`
- **Každá kolekce** musí být ve své vlastní složce v `apiTest/`
- **Bruno CLI** musí být spuštěn **z kořenové složky kolekce**
### 2. Typy API
| Typ | Příklad | Vyžaduje backend? | URL příklad |
|-----|---------|-------------------|-------------|
| **Veřejné API** | JSONPlaceholder, OpenWeather | ❌ Ne | `https://api.example.com` |
| **Lokální API** | PotterAPI | ✅ Ano | `http://localhost:3000` |
| **Mock API** | json-server, MSW | ✅/❌ | `http://localhost:3001` |
### 3. Backend závislosti
Pokud testy vyžadují místní backend:
- Ujistěte se, že backend běží před spuštěním testů
- Použijte `npm run test:all:with-backend` pro automatické spuštění
- Nebo spusťte backend ručně: `cd backends/<služba> && npm start`
---
## 📝 Kompletní příklad: OpenWeather API
### 1. Vytvoř strukturu
```bash
mkdir -p apiTest/OpenWeather/Current
```
### 2. Vytvoř opencollection.yml
```yaml
opencollection: 1.0.0
info:
name: OpenWeather
request:
auth: inherit
bundled: false
```
### 3. Vytvoř složku pro endpoint
```yaml
# apiTest/OpenWeather/Current/folder.yml
info:
name: Current Weather
type: folder
seq: 1
request:
auth: inherit
```
### 4. Vytvoř test
```yaml
# apiTest/OpenWeather/Current/Get-current-weather.yml
info:
name: Get current weather by city
type: http
seq: 1
http:
method: GET
url: https://api.openweathermap.org/data/2.5/weather
params:
- name: q
value: London
type: query
- name: appid
value: YOUR_API_KEY
type: query
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test("Status code is 200", function() {
expect(res.getStatus()).to.equal(200);
});
test("Response has weather data", function() {
expect(res.getBody()).to.have.property('weather');
});
settings:
encodeUrl: true
timeout: 10000
```
---
## 🔧 Řešení problémů
### ❌ Problém: "You can run only at the root of a collection"
**Příčina:** Bruno CLI je spuštěn z nesprávného adresáře.
**Řešení:** Spouštěj vždy z kořenové složky kolekce (kde je `opencollection.yml`)
### ❌ Problém: Testy pro lokální API selhávají
**Příčina:** Backend není spuštěn.
**Řešení:** Použij `npm run test:all:with-backend` nebo spusť backend ručně
### ❌ Problém: "Path not found"
**Příčina:** Špatná cesta k testu.
**Řešení:** Zkontroluj cesty a existenci všech souborů
---
## 💡 Tipy
1. **Nazví složky konvenčně:** Používej `-` místo mezer
2. **Sekvence testů:** Používej `seq:` pro určení pořadí
3. **Dokumentace:** Přidej `README.md` do každé nové kolekce
4. **Testuj postupně:** Začni s jednoduchými testy a přidávej komplexnější
---
## 📚 Další zdroje
### Bruno
- [Bruno Dokumentace](https://www.usebruno.com/docs) – Oficiální dokumentace
- [Bruno GitHub](https://github.com/usebruno/bruno) – Open-source repozitář
### Testování
- [Chai Assertion Library](https://www.chaijs.com/) – Dokumentace testovací knihovny
### Vibe & Mistral AI
- [Mistral AI](https://mistral.ai/) – Hlavní web společnosti
- [Mistral AI Dokumentace](https://docs.mistral.ai/) – Oficiální dokumentace
- [Vibe Code](https://mistral.ai/products/vibe/code) – AI asistent pro vývoj
---
*Poslední aktualizace: 15. září 2026*