.PHONY: install test test-django test-react test-integration docker-up docker-down clean

# ─── Setup ───────────────────────────────────────────────────────────────────

install:
	cd django && pip install -e ".[dev,channels]"
	cd react && npm install

# ─── Unit Tests ──────────────────────────────────────────────────────────────

test: test-django test-react

test-django:
	cd django && pytest

test-react:
	cd react && npm test

# ─── Integration Tests ──────────────────────────────────────────────────────

test-integration: docker-up
	@echo "Waiting for backend..."
	@timeout 30 sh -c 'until curl -sf http://localhost:8000/api/mizan/session/ > /dev/null 2>&1; do sleep 1; done'
	cd react && npm run test:integration
	@$(MAKE) docker-down

# ─── Docker ──────────────────────────────────────────────────────────────────

docker-up:
	docker compose -f docker-compose.test.yml up -d --build
	@echo "Backend starting at http://localhost:8000"

docker-down:
	docker compose -f docker-compose.test.yml down

# ─── All ─────────────────────────────────────────────────────────────────────

test-all: test test-integration

# ─── Cleanup ─────────────────────────────────────────────────────────────────

clean:
	docker compose -f docker-compose.test.yml down -v --remove-orphans 2>/dev/null || true
	rm -rf django/src/mizan.egg-info django/dist django/build
	rm -rf react/dist react/node_modules
	rm -f examples/django-react-site/backend/db.sqlite3
