|
7 | 7 |
|
8 | 8 | from alyx.test_base import setup_admin_subject_user |
9 | 9 | from misc.models import LabMember |
10 | | -from subjects.models import Subject |
| 10 | +from subjects.models import Subject, BreedingPair |
11 | 11 | from actions.models import Cull, CullMethod, CullReason |
12 | | -from subjects.admin import CullForm, SubjectAdmin |
| 12 | +from subjects.admin import CullForm, SubjectAdmin, BreedingPairAdminForm |
| 13 | + |
| 14 | + |
| 15 | +class TestBreedingPairAdmin(TestCase): |
| 16 | + fixtures = ['misc.lab.json'] |
| 17 | + |
| 18 | + def setUp(self): |
| 19 | + self.site = AdminSite() |
| 20 | + setup_admin_subject_user(self) |
| 21 | + |
| 22 | + def test_set_end_date_with_culled_subject(self): |
| 23 | + lab_member_stock_manager = LabMember.objects.create_user( |
| 24 | + username='stock_manager', password='bar123', email='foo@example.com', is_staff=True, is_active=True, is_stock_manager=True) |
| 25 | + kwargs_subjects = dict(birth_date=date(2025, 1, 1), lab=self.lab, responsible_user=lab_member_stock_manager) |
| 26 | + father = Subject.objects.create(nickname='father', sex='M', **kwargs_subjects) |
| 27 | + mother1 = Subject.objects.create(nickname='mother1', sex='F', **kwargs_subjects) |
| 28 | + breeding_pair = BreedingPair.objects.create(father=father, mother1=mother1, mother2=None) |
| 29 | + # the form is valid as both parents are alive |
| 30 | + form_data = { |
| 31 | + 'json': breeding_pair.json, |
| 32 | + 'description': breeding_pair.description, |
| 33 | + 'name': breeding_pair.name, |
| 34 | + 'line': breeding_pair.line, |
| 35 | + 'start_date': breeding_pair.start_date, |
| 36 | + 'end_date': breeding_pair.end_date, |
| 37 | + 'father': breeding_pair.father, |
| 38 | + 'mother1': breeding_pair.mother1, |
| 39 | + 'mother2': breeding_pair.mother2, |
| 40 | + } |
| 41 | + form_instance = BreedingPairAdminForm(data=form_data, instance=breeding_pair) |
| 42 | + self.assertTrue(form_instance.is_valid()) |
| 43 | + # the form is still valid once the father is culled: it can´t be set on a new breeding pair, |
| 44 | + # but it can remain on this one and the form is valid |
| 45 | + Cull(subject=father, user=lab_member_stock_manager, date=date(2025, 6, 1)) |
| 46 | + father.save() |
| 47 | + form_instance = BreedingPairAdminForm(data=form_data, instance=breeding_pair) |
| 48 | + self.assertTrue(form_instance.is_valid()) |
13 | 49 |
|
14 | 50 |
|
15 | 51 | class TestSubjectCullForm(TestCase): |
|
0 commit comments