from __future__ import annotations import pytest from django.contrib.auth import get_user_model from django.urls import reverse from apps.jobs.models import Feedback @pytest.mark.integration @pytest.mark.django_db @pytest.mark.parametrize( "route_name", ["jobs:activity", "jobs:employers", "dashboard:system"], ) def test_intelligence_routes_require_login(client, route_name): response = client.get(reverse(route_name)) assert response.status_code == 302 assert reverse("login") in response.url @pytest.mark.integration @pytest.mark.django_db def test_activity_feed_filters_and_scopes_user_events(client, user, job): other = get_user_model().objects.create_user(username="activity-other") Feedback.objects.create( user=other, job=job, action=Feedback.Action.HIDE, reason="private-other-marker", ) Feedback.objects.create( user=user, job=job, action=Feedback.Action.INTERESTING, reason="own-event-marker", ) client.force_login(user) response = client.get(reverse("jobs:activity"), {"type": "feedback"}) assert response.status_code == 200 body = response.content.decode("utf-8") assert "own-event-marker" in body assert "private-other-marker" not in body assert response.context["event_page"].paginator.count == 1 @pytest.mark.integration @pytest.mark.django_db def test_employer_index_and_detail_use_real_aggregates(client, user, profile, job, source): client.force_login(user) response = client.get(reverse("jobs:employers"), {"q": job.employer.name}) assert response.status_code == 200 assert response.context["selected_employer"].pk == job.employer_id assert response.context["selected_employer"].active_vacancies == 1 assert response.context["selected_employer"].relevant_vacancies == 1 assert job.original_title in response.content.decode("utf-8") detail = client.get(reverse("jobs:employer-detail", kwargs={"pk": job.employer_id})) assert detail.status_code == 200 assert detail.context["employer"].pk == job.employer_id assert [item.pk for item in detail.context["recent_jobs"]] == [job.pk] @pytest.mark.integration @pytest.mark.django_db def test_automation_center_labels_unmeasured_runtime_honestly(client, user): client.force_login(user) response = client.get(reverse("dashboard:system")) assert response.status_code == 200 body = response.content.decode("utf-8") assert "Automation center" in body assert "worker niet gemeten" in body or "Eager/lokaal" in body assert "Niet geconfigureerd" in body assert len(response.context["phase_rows"]) == 8