This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
from datetime import timedelta
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
from django.core.management import call_command
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.sources.models import Source, SourcePolicyReview
|
||||
from apps.sources.views import _source_list_queryset
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_seed_sources_registers_reviewed_live_feed_and_hides_demo(tmp_path):
|
||||
Source.objects.create(
|
||||
name="Voorbeeldwerkgever (fixture)",
|
||||
source_type=Source.Type.EMPLOYER,
|
||||
base_url="https://jobs.example.org/vacatures/",
|
||||
domain="jobs.example.org",
|
||||
)
|
||||
expires_at = (timezone.now() + timedelta(days=30)).isoformat()
|
||||
retired_source = Source.objects.create(
|
||||
name="Brusselse werkgever",
|
||||
source_type=Source.Type.ATS,
|
||||
base_url="https://brussels-employer.example/jobs",
|
||||
domain="brussels-employer.example",
|
||||
status=Source.Status.ACTIVE,
|
||||
policy=Source.Policy.ALLOW,
|
||||
next_run_at=timezone.now(),
|
||||
)
|
||||
payload = {
|
||||
"disable_demo_sources": True,
|
||||
"retire_source_urls": [retired_source.base_url],
|
||||
"sources": [
|
||||
{
|
||||
"name": "VITO",
|
||||
"url": "https://vito.recruitee.com/api/offers/",
|
||||
"type": "ats",
|
||||
"status": "trial",
|
||||
"policy": "review",
|
||||
"parser": "ats-recruitee",
|
||||
"allow_public_endpoint": True,
|
||||
"metadata": {"country_scope": "BE"},
|
||||
"review": {
|
||||
"decision": "trial",
|
||||
"reason": "Publieke feed",
|
||||
"evidence_link": "https://docs.recruitee.com/reference/offers",
|
||||
"expires_at": expires_at,
|
||||
},
|
||||
},
|
||||
{
|
||||
"name": "Lever werkgever A",
|
||||
"url": "https://api.lever.co/v0/postings/werkgever-a?mode=json",
|
||||
"type": "ats",
|
||||
"status": "trial",
|
||||
"policy": "allow",
|
||||
"parser": "ats-lever",
|
||||
"allow_public_endpoint": True,
|
||||
},
|
||||
{
|
||||
"name": "Lever werkgever B",
|
||||
"url": "https://api.lever.co/v0/postings/werkgever-b?mode=json",
|
||||
"type": "ats",
|
||||
"status": "trial",
|
||||
"policy": "allow",
|
||||
"parser": "ats-lever",
|
||||
"allow_public_endpoint": True,
|
||||
},
|
||||
],
|
||||
}
|
||||
seed_path = tmp_path / "sources.yaml"
|
||||
seed_path.write_text(yaml.safe_dump(payload), encoding="utf-8")
|
||||
|
||||
call_command("seed_sources", str(seed_path))
|
||||
call_command("seed_sources", str(seed_path))
|
||||
|
||||
demo = Source.objects.get(domain="jobs.example.org")
|
||||
assert demo.status == Source.Status.DISABLED
|
||||
assert demo.metadata["demo"] is True
|
||||
retired_source.refresh_from_db()
|
||||
assert retired_source.status == Source.Status.DISABLED
|
||||
assert retired_source.next_run_at is None
|
||||
assert retired_source.metadata["hidden_from_source_list"] is True
|
||||
assert retired_source.metadata["retired_reason"] == "Buiten de ingestelde regionale dekking"
|
||||
source = Source.objects.get(name="VITO")
|
||||
assert retired_source not in _source_list_queryset()
|
||||
assert source in _source_list_queryset()
|
||||
assert source.allow_public_endpoint is True
|
||||
assert source.parser_key == "ats-recruitee"
|
||||
assert source.latest_policy_review.decision == SourcePolicyReview.Decision.TRIAL
|
||||
assert source.policy_reviews.count() == 1
|
||||
assert Source.objects.filter(domain="api.lever.co", source_type=Source.Type.ATS).count() == 2
|
||||
Reference in New Issue
Block a user