@@ -0,0 +1,86 @@
|
||||
from io import StringIO
|
||||
|
||||
import pytest
|
||||
from django.core.management import call_command
|
||||
|
||||
from apps.sources.models import Source
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_discover_sources_command_runs_for_all_modes_and_is_replayable():
|
||||
out = StringIO()
|
||||
call_command(
|
||||
"discover_sources",
|
||||
"html",
|
||||
"--input",
|
||||
"fixtures/discovery/html_candidate_discovery.html",
|
||||
"--base-url",
|
||||
"https://example.org/",
|
||||
stdout=out,
|
||||
)
|
||||
call_command(
|
||||
"discover_sources",
|
||||
"sitemap",
|
||||
"--input",
|
||||
"fixtures/discovery/sitemap_index.xml",
|
||||
"--base-url",
|
||||
"https://jobs.example.org/",
|
||||
stdout=out,
|
||||
)
|
||||
call_command(
|
||||
"discover_sources",
|
||||
"feed",
|
||||
"--input",
|
||||
"fixtures/discovery/feed_jobs.xml",
|
||||
"--base-url",
|
||||
"https://jobs.example.org/feed/jobs",
|
||||
stdout=out,
|
||||
)
|
||||
call_command(
|
||||
"discover_sources",
|
||||
"email",
|
||||
"--input",
|
||||
"fixtures/emails/sample_alert.eml",
|
||||
stdout=out,
|
||||
)
|
||||
|
||||
source_types = {
|
||||
(source.domain, source.source_type)
|
||||
for source in Source.objects.filter(status=Source.Status.CANDIDATE)
|
||||
}
|
||||
assert ("example.org", Source.Type.EMPLOYER) in source_types
|
||||
assert ("jobs.example.org", Source.Type.EMPLOYER) in source_types
|
||||
assert ("example.org", Source.Type.RSS) in source_types
|
||||
assert ("jobs.example.org", Source.Type.SITEMAP) in source_types
|
||||
assert ("jobs.example.org", Source.Type.RSS) in source_types
|
||||
assert "Persist result" in out.getvalue()
|
||||
|
||||
out.seek(0)
|
||||
out.truncate(0)
|
||||
call_command(
|
||||
"discover_sources",
|
||||
"html",
|
||||
"--input",
|
||||
"fixtures/discovery/html_candidate_discovery.html",
|
||||
"--base-url",
|
||||
"https://example.org/",
|
||||
stdout=out,
|
||||
)
|
||||
assert Source.objects.filter(status=Source.Status.CANDIDATE).count() == 5
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_discover_sources_dry_run_keeps_db_empty():
|
||||
out = StringIO()
|
||||
call_command(
|
||||
"discover_sources",
|
||||
"feed",
|
||||
"--input",
|
||||
"fixtures/discovery/feed_jobs.xml",
|
||||
"--base-url",
|
||||
"https://jobs.example.org/feed/jobs",
|
||||
"--dry-run",
|
||||
stdout=out,
|
||||
)
|
||||
assert Source.objects.count() == 0
|
||||
assert "Dry-run modus" in out.getvalue()
|
||||
Reference in New Issue
Block a user