Last active
February 16, 2024 17:11
-
-
Save joshuadavidthomas/024d6e91585ab625588cdf1492c6f83e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pytest | |
from django.db import models | |
from django_q.models import Schedule | |
from model_bakery import baker | |
class Task(models.Model): | |
q_schedule = models.OneToOneField( | |
"django_q.Schedule", | |
on_delete=models.SET_NULL, | |
null=True, | |
related_name="registered_task", | |
) | |
@pytest.mark.xfail(reason="setting the related field on the other model does not work") | |
def test_related_field_on_other_model(self): | |
task = baker.make("test_models.Task") | |
assert task.q_schedule is None | |
schedule = baker.make("django_q.Schedule", registered_task=task) | |
assert Schedule.objects.all().count() == 1 | |
assert Schedule.objects.first() == schedule | |
# this works | |
assert task.q_schedule == schedule | |
# this doesn't? | |
assert Task.objects.first().q_schedule == schedule | |
# this works | |
assert schedule.registered_task == task | |
# this doesn't? | |
assert Schedule.objects.first().registered_task == task | |
# neither of these work | |
assert Schedule.objects.get(registered_task=task) == schedule | |
assert Schedule.objects.filter(registered_task__isnull=False).count() == 1 | |
def test_related_field_on_our_model(self): | |
task = baker.make("test_models.Task") | |
assert task.q_schedule is None | |
schedule = baker.make("django_q.Schedule") | |
task.q_schedule = schedule | |
task.save() | |
assert Schedule.objects.all().count() == 1 | |
assert Schedule.objects.first() == schedule | |
assert task.q_schedule == schedule | |
assert Task.objects.first().q_schedule == schedule | |
assert schedule.registered_task == task | |
assert Schedule.objects.first().registered_task == task | |
assert Schedule.objects.get(registered_task=task) == schedule | |
assert Schedule.objects.filter(registered_task__isnull=False).count() == 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment