• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

cortex-lab / alyx / 30009912894

23 Jul 2026 01:08PM UTC coverage: 44.117% (-42.8%) from 86.879%
30009912894

Pull #1025

github

web-flow
Merge c6b303d03 into 4bc43eb2e
Pull Request #1025: Run tests with migrations

4829 of 10946 relevant lines covered (44.12%)

0.44 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

23.73
alyx/data/tests_admin.py
1
"""Tests for data admin pages."""
2

3
from django.utils import timezone
1✔
4
from django.contrib.admin.sites import AdminSite
1✔
5
from django.test import RequestFactory, TestCase
1✔
6

7
from actions.models import Session
1✔
8
from alyx.test_base import setup_admin_subject_user
1✔
9
from data.admin import DataNoticeAdmin
1✔
10
from data.models import DataNotice, Dataset, Tag
1✔
11
from subjects.models import Project
1✔
12

13

14
class TestDataNoticeAdminDatasetTagFilter(TestCase):
1✔
15
        fixtures = ['misc.lab.json']
1✔
16

17
        def setUp(self):
1✔
18
                setup_admin_subject_user(self)
×
19
                self.site = AdminSite()
×
20
                self.factory = RequestFactory()
×
21
                self.model_admin = DataNoticeAdmin(DataNotice, self.site)
×
22

23
        def _make_filter(self, query_params):
1✔
24
                request = self.factory.get('/admin/data/datanotice/', data=query_params)
×
25
                request.user = self.user
×
26
                params = request.GET.copy()
×
27
                return self.model_admin.DatasetTagListFilter(request, params, DataNotice, self.model_admin)
×
28

29
        def test_dataset_tag_filter_returns_matching_notices(self):
1✔
30
                d1 = Dataset.objects.create(name='notice-tag-admin-1.npy')
×
31
                d2 = Dataset.objects.create(name='notice-tag-admin-2.npy')
×
32
                public_tag = Tag.objects.create(name='public-tag-admin')
×
33
                private_tag = Tag.objects.create(name='private-tag-admin')
×
34
                d1.tags.add(public_tag)
×
35
                d2.tags.add(private_tag)
×
36

37
                n1 = DataNotice.objects.create(name='admin-tag-notice-a', created_by=self.user)
×
38
                n1.datasets.add(d1)
×
39
                n2 = DataNotice.objects.create(name='admin-tag-notice-b', created_by=self.user)
×
40
                n2.datasets.add(d2)
×
41
                n3 = DataNotice.objects.create(name='admin-tag-notice-c', created_by=self.user)
×
42
                n3.datasets.add(d1, d2)
×
43

44
                admin_filter = self._make_filter({'dataset_tag': str(public_tag.id)})
×
45
                filtered = admin_filter.queryset(None, DataNotice.objects.all())
×
46

47
                names = set(filtered.values_list('name', flat=True))
×
48
                self.assertEqual(names, {'admin-tag-notice-a', 'admin-tag-notice-c'})
×
49

50
        def test_project_filter_returns_matching_notices(self):
1✔
51
                project_a = Project.objects.create(name='project-admin-a')
×
52
                project_b = Project.objects.create(name='project-admin-b')
×
53

54
                session_a = Session.objects.create(subject=self.subject, start_time=timezone.now())
×
55
                session_b = Session.objects.create(subject=self.subject, start_time=timezone.now())
×
56
                session_a.projects.add(project_a)
×
57
                session_b.projects.add(project_b)
×
58

59
                d1 = Dataset.objects.create(name='notice-project-admin-1.npy', session=session_a)
×
60
                d2 = Dataset.objects.create(name='notice-project-admin-2.npy', session=session_b)
×
61

62
                n1 = DataNotice.objects.create(name='admin-project-notice-a', created_by=self.user)
×
63
                n1.datasets.add(d1)
×
64
                n2 = DataNotice.objects.create(name='admin-project-notice-b', created_by=self.user)
×
65
                n2.datasets.add(d2)
×
66
                n3 = DataNotice.objects.create(name='admin-project-notice-c', created_by=self.user)
×
67
                n3.datasets.add(d1, d2)
×
68

69
                request = self.factory.get('/admin/data/datanotice/', data={'project': str(project_a.id)})
×
70
                request.user = self.user
×
71
                params = request.GET.copy()
×
72
                admin_filter = self.model_admin.SessionProjectListFilter(
×
73
                        request,
74
                        params,
75
                        DataNotice,
76
                        self.model_admin,
77
                )
78
                filtered = admin_filter.queryset(None, DataNotice.objects.all())
×
79

80
                names = set(filtered.values_list('name', flat=True))
×
81
                self.assertEqual(names, {'admin-project-notice-a', 'admin-project-notice-c'})
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc