import pytest from django.urls import reverse from datetime import date from plants.models import Plant, PruningLog @pytest.mark.django_db class TestDashboard: def test_returns_200(self, client): resp = client.get(reverse('dashboard')) assert resp.status_code == 200 def test_shows_total_plant_count(self, client): Plant.objects.create(name='Fern', location='Office') Plant.objects.create(name='Rose', location='Garden') resp = client.get(reverse('dashboard')) assert resp.context['total_plants'] == 2 def test_overdue_plant_appears_in_context(self, client): plant = Plant.objects.create(name='Rose', location='Garden', pruning_months=[3]) # No log — overdue relative to current date (month 3 is more than 6 months ago only if checked after September) # Use a month that's definitely in the recent past: use today's month - 1 resp = client.get(reverse('dashboard')) # Just check the view works; pruning logic is tested separately assert 'overdue' in resp.context def test_due_this_month_plant_appears_in_context(self, client): today = date.today() plant = Plant.objects.create( name='Apple', location='Garden', pruning_months=[today.month] ) resp = client.get(reverse('dashboard')) assert plant in resp.context['due_this_month']