Skip to content

Commit 2197ebb

Browse files
committed
The changes made in this commit include:
- Modified `name` and `display_name` fields in `DataSourceFactory` to use a sequence with a prefix. - Modified `name` and `display_name` fields in `SourceSubdivisionFactory` to use a sequence with a prefix. - Modified `description` field in `SourceSubdivisionFactory` to generate fake text with a maximum of 250 characters. - Modified `name` field in `GeographyFactory` to use a sequence with a prefix. - Modified `name` field in `PathogenFactory` to use a sequence with a prefix. - Modified `name` field in `SignalCategoryFactory` to use a sequence with a prefix. - Modified `name` field in `SignalTypeFactory` to use a sequence with a prefix. - Modified `name` field in `SignalFactory` to use a sequence with a prefix. - Modified `short_description` and `description` fields in `SignalFactory` to generate fake text with a maximum of 500 characters. - Added test cases for filtering and searching in `SignalListViewTest`. - Added test cases for `SignalDetailViewTest`. - Removed unnecessary code in `SignalsListView` view.
1 parent 5bb2a19 commit 2197ebb

File tree

4 files changed

+74
-15
lines changed

4 files changed

+74
-15
lines changed

src/datasources/factories.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ class DataSourceFactory(DjangoModelFactory):
1414
class Meta:
1515
model = DataSource
1616

17-
name = Sequence(lambda n: f'{n}')
18-
display_name = Sequence(lambda n: f'{n}')
17+
name = Sequence(lambda n: f'datasource_name_{n}')
18+
display_name = Sequence(lambda n: f'datasource_display_name_{n}')
1919

2020

2121
class SourceSubdivisionFactory(DjangoModelFactory):
@@ -25,8 +25,8 @@ class SourceSubdivisionFactory(DjangoModelFactory):
2525
class Meta:
2626
model = SourceSubdivision
2727

28-
name = Sequence(lambda n: f'{n}')
29-
display_name = Sequence(lambda n: f'{n}')
30-
description = fake.text()
28+
name = Sequence(lambda n: f'subdicision_name_{n}')
29+
display_name = Sequence(lambda n: f'subdicision_display_name_{n}')
30+
description = fake.text(max_nb_chars=250)
3131
db_source = fake.word()
3232
data_source = SubFactory(DataSourceFactory)

src/signals/factories.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class GeographyFactory(DjangoModelFactory):
3030
class Meta:
3131
model = Geography
3232

33-
name = Sequence(lambda n: f'{n}')
33+
name = Sequence(lambda n: f'geography_name_{n}')
3434

3535

3636
class PathogenFactory(DjangoModelFactory):
@@ -40,7 +40,7 @@ class PathogenFactory(DjangoModelFactory):
4040
class Meta:
4141
model = Pathogen
4242

43-
name = Sequence(lambda n: f'{n}')
43+
name = Sequence(lambda n: f'pathogen_name_{n}')
4444

4545

4646
class SignalCategoryFactory(DjangoModelFactory):
@@ -50,7 +50,7 @@ class SignalCategoryFactory(DjangoModelFactory):
5050
class Meta:
5151
model = SignalCategory
5252

53-
name = Sequence(lambda n: f'{n}')
53+
name = Sequence(lambda n: f'category_name_{n}')
5454

5555

5656
class SignalTypeFactory(DjangoModelFactory):
@@ -60,14 +60,14 @@ class SignalTypeFactory(DjangoModelFactory):
6060
class Meta:
6161
model = SignalType
6262

63-
name = Sequence(lambda n: f'{n}')
63+
name = Sequence(lambda n: f'signal_type_name_{n}')
6464

6565

6666
class SignalFactory(DjangoModelFactory):
6767
"""
6868
A factory for the Signal model.
6969
"""
70-
name = Sequence(lambda n: f'{n}')
70+
name = Sequence(lambda n: f'signal_name_{n}')
7171
active = fake.boolean()
7272
short_description = fake.text(max_nb_chars=500)
7373
description = fake.text(max_nb_chars=500)

src/signals/tests.py

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
from django.test import TestCase
1+
from unittest.mock import patch
2+
3+
from django.test import TestCase, override_settings
24
from django.urls import reverse
35
from faker import Faker
46

7+
from base.models import Link
58
from signals.factories import SignalFactory
9+
from signals.models import Signal
610

711
fake = Faker()
812

@@ -26,8 +30,65 @@ def test_signal_list_view_context(self):
2630
self.assertTrue('paginator' in response.context)
2731
self.assertTrue('filter' in response.context)
2832

29-
def test_signal_list_view_filter_by_pathogen(self):
33+
def test_signal_list_view_filters(self):
3034
signal = SignalFactory()
3135
response = self.client.get(reverse('signals'), {'pathogen': signal.pathogen.first().id})
3236
self.assertEqual(response.status_code, 200)
33-
self.assertEqual(response.context['signals'].count(), 1)
37+
self.assertEqual(response.context['filter'].qs.count(), 1)
38+
self.assertEqual(response.context['filter'].qs.first(), signal)
39+
response = self.client.get(reverse('signals'), {'available_geography': signal.available_geography.first().id})
40+
self.assertEqual(response.status_code, 200)
41+
self.assertEqual(response.context['filter'].qs.count(), 1)
42+
self.assertEqual(response.context['filter'].qs.first(), signal)
43+
response = self.client.get(reverse('signals'), {'signal_type': signal.signal_type.first().id})
44+
self.assertEqual(response.status_code, 200)
45+
self.assertEqual(response.context['filter'].qs.count(), 1)
46+
self.assertEqual(response.context['filter'].qs.first(), signal)
47+
response = self.client.get(reverse('signals'), {'category': signal.category.id})
48+
self.assertEqual(response.status_code, 200)
49+
self.assertEqual(response.context['filter'].qs.count(), 1)
50+
self.assertEqual(response.context['filter'].qs.first(), signal)
51+
response = self.client.get(reverse('signals'), {'source': signal.source.id})
52+
self.assertEqual(response.status_code, 200)
53+
self.assertEqual(response.context['filter'].qs.count(), 1)
54+
self.assertEqual(response.context['filter'].qs.first(), signal)
55+
response = self.client.get(reverse('signals'), {'time_label': signal.time_label})
56+
self.assertEqual(response.status_code, 200)
57+
for s in response.context['filter'].qs:
58+
self.assertEqual(s.time_label, signal.time_label)
59+
60+
def test_signal_list_view_search(self):
61+
name = fake.random_element(Signal.objects.all()).name
62+
description_word = fake.random_element(fake.random_element(Signal.objects.all()).description.split(' ')).strip()
63+
short_description_word = fake.random_element(fake.random_element(Signal.objects.all()).short_description.split(' ')).strip()
64+
response = self.client.get(reverse('signals'), {'search': name})
65+
self.assertEqual(response.status_code, 200)
66+
self.assertEqual(response.context['filter'].qs.count(), 1)
67+
self.assertEqual(response.context['filter'].qs.first().name, name)
68+
response = self.client.get(reverse('signals'), {'search': description_word})
69+
self.assertEqual(response.status_code, 200)
70+
for s in response.context['filter'].qs:
71+
self.assertTrue(description_word in s.description)
72+
response = self.client.get(reverse('signals'), {'search': short_description_word})
73+
self.assertEqual(response.status_code, 200)
74+
for s in response.context['filter'].qs:
75+
self.assertTrue(short_description_word in s.short_description)
76+
77+
78+
@override_settings(CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}})
79+
class SignalDetailViewTest(TestCase):
80+
81+
def setUp(self):
82+
self.signal = SignalFactory()
83+
84+
def test_signal_detail_view(self):
85+
with patch.object(Link, 'get_preview'):
86+
response = self.client.get(reverse('signal', kwargs={'pk': self.signal.id}))
87+
self.assertEqual(response.status_code, 200)
88+
self.assertTemplateUsed(response, 'signals/signal_detail.html')
89+
90+
def test_signal_detail_view_context(self):
91+
with patch.object(Link, 'get_preview'):
92+
response = self.client.get(reverse('signal', kwargs={'pk': self.signal.id}))
93+
self.assertTrue('signal' in response.context)
94+
self.assertEqual(response.context['signal'], self.signal)

src/signals/views.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ class SignalsListView(ListView):
1616
def get_queryset(self):
1717
queryset = super().get_queryset()
1818
f = SignalFilter(self.request.GET, queryset=queryset)
19-
for i in queryset:
20-
i.get_base_diffs()
2119
return f.qs
2220

2321
def get_context_data(self, **kwargs):

0 commit comments

Comments
 (0)