import pytest from django.test import Client from blog.models import Post, Tag, User @pytest.fixture def client(): return Client() @pytest.fixture def user(db): return User.objects.create( username="alice", email="alice@example.com", display_name="Alice", ) @pytest.mark.django_db def test_list_posts_returns_published(client, user): tag = Tag.objects.create(name="Python", slug="python") post = Post.objects.create(author=user, title="Hello", body="World") post.tags.add(tag) Post.objects.create(author=user, title="Draft", body="...", is_published=False) response = client.get("/api/posts") assert response.status_code == 200 data = response.json() titles = [p["title"] for p in data] assert "Hello" in titles assert "Draft" not in titles @pytest.mark.django_db def test_get_post_returns_detail(client, user): post = Post.objects.create(author=user, title="Hello", body="World") response = client.get(f"/api/posts/{post.id}") assert response.status_code == 200 data = response.json() assert data["title"] == "Hello" assert data["author"]["username"] == "alice" assert data["comments"] == []