46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import pytest
|
|
from django.contrib.auth import get_user_model
|
|
from apps.organizations.models import Organization
|
|
from apps.jobs.models import Job
|
|
|
|
User = get_user_model()
|
|
|
|
@pytest.fixture
|
|
def org():
|
|
return Organization.objects.create(name='测试公司', email='test@test.com')
|
|
|
|
@pytest.fixture
|
|
def admin_user(org):
|
|
return User.objects.create_user(
|
|
username='admin1', password='pass123',
|
|
role='admin', organization=org
|
|
)
|
|
|
|
@pytest.mark.django_db
|
|
class TestJobModel:
|
|
def test_create_job(self, org):
|
|
job = Job.objects.create(
|
|
organization=org, title='Python工程师',
|
|
category='技术', location='北京', salary='20k-30k',
|
|
description='职位描述', status='published'
|
|
)
|
|
assert job.status == 'published'
|
|
assert str(job) == 'Python工程师'
|
|
|
|
@pytest.mark.django_db
|
|
class TestJobAPI:
|
|
def test_public_can_list_published_jobs(self, client, org):
|
|
Job.objects.create(
|
|
organization=org, title='已发布职位',
|
|
status='published', category='技术',
|
|
location='北京', salary='10k'
|
|
)
|
|
Job.objects.create(
|
|
organization=org, title='草稿职位',
|
|
status='draft', category='技术',
|
|
location='北京', salary='10k'
|
|
)
|
|
response = client.get('/api/jobs/public/')
|
|
assert response.status_code == 200
|
|
assert response.data['count'] == 1
|