feat: add automation activity and employer intelligence
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
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
|
||||
Reference in New Issue
Block a user