Skip to content

Commit 66c0224

Browse files
committed
feat(delete): Prepare deletion of ddm_pooled.
1 parent d5807b9 commit 66c0224

File tree

5 files changed

+17
-127
lines changed

5 files changed

+17
-127
lines changed

config/settings/base.py

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
'wagtail',
4444
'modelcluster',
4545
'taggit',
46+
'ddm_pooled'
4647
]
4748

4849
MIDDLEWARE = [

ddm_pooled/admin.py

-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,2 @@
11
from django.contrib import admin
2-
from ddm_pooled.models import PooledProject
32

4-
5-
class PooledProjectAdmin(admin.ModelAdmin):
6-
"""
7-
Provides an overview of all Pooled Donation Projects.
8-
"""
9-
list_display = ['project']
10-
11-
12-
admin.site.register(PooledProject, PooledProjectAdmin)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Generated by Django 3.2.17 on 2024-05-21 16:04
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('ddm_pooled', '0006_delete_poolparticipant'),
10+
]
11+
12+
operations = [
13+
migrations.DeleteModel(
14+
name='PooledProject',
15+
),
16+
]

ddm_pooled/models.py

-12
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,3 @@
22
from django.db import models
33

44

5-
class PooledProject(models.Model):
6-
project = models.OneToOneField('ddm.DonationProject', on_delete=models.CASCADE)
7-
external_id = models.CharField(max_length=50, null=False, unique=True)
8-
9-
get_donation_consent = models.BooleanField(default=True)
10-
donation_briefing = RichTextUploadingField(
11-
null=True, blank=True,
12-
verbose_name='Donation Briefing Text',
13-
help_text='If "get donation consent" is enabled, will be displayed before '
14-
'the debriefing page.',
15-
config_name='ddm_ckeditor'
16-
)

ddm_pooled/tests.py

-105
Original file line numberDiff line numberDiff line change
@@ -1,105 +0,0 @@
1-
from django.contrib.auth import get_user_model
2-
from django.urls import reverse
3-
from django.utils import timezone
4-
from rest_framework import status
5-
from rest_framework.test import APITestCase
6-
7-
from ddm.models.core import Participant, ResearchProfile, DonationProject
8-
from ddm.tests.test_participation_flow import ParticipationFlowBaseTestCase
9-
from ddm_pooled.models import PooledProject
10-
from ddm_pooled.settings import POOL_KW, PROJECT_KW
11-
12-
13-
User = get_user_model()
14-
15-
16-
class ParticipantAPITests(APITestCase):
17-
@classmethod
18-
def setUpTestData(cls):
19-
cls.user = User.objects.create_user(**{
20-
'username': 'u', 'password': '123', 'email': 'owner@mail.com'
21-
})
22-
profile = ResearchProfile.objects.create(user=cls.user)
23-
project = DonationProject.objects.create(
24-
name='Base Project', slug='base', owner=profile)
25-
cls.pooled_project = PooledProject.objects.create(
26-
project=project, external_id='external_id')
27-
Participant.objects.create(
28-
project=project,
29-
external_id='abc',
30-
start_time=timezone.now(),
31-
extra_data={'pool_id': 'test_pool'}
32-
)
33-
34-
def test_get_participants(self):
35-
"""
36-
Ensure the correct participant information is retrieved.
37-
"""
38-
url = reverse('participant-list')
39-
data = {
40-
'extra_data': {'pool_id': 'test_pool'},
41-
'external_id': '1',
42-
'completed': False
43-
}
44-
self.client.force_authenticate(user=self.user)
45-
response = self.client.get(
46-
url, {POOL_KW: 'test_pool', PROJECT_KW: 'external_id'}, format='json')
47-
self.assertEqual(response.status_code, status.HTTP_200_OK)
48-
self.assertEqual(len(response.data), 1)
49-
self.assertCountEqual(dict(response.data[0]), data)
50-
51-
def test_get_participants_without_poolid(self):
52-
"""
53-
Ensure query without pool_id raises 400.
54-
"""
55-
url = reverse('participant-list')
56-
self.client.force_authenticate(user=self.user)
57-
response = self.client.get(url, format='json')
58-
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
59-
60-
61-
class TestPoolDonateView(ParticipationFlowBaseTestCase):
62-
63-
@classmethod
64-
def setUpTestData(cls):
65-
super().setUpTestData()
66-
cls.pooled_project = PooledProject.objects.create(
67-
project=cls.project_base, external_id='abc')
68-
69-
def setUp(self):
70-
super().setUp()
71-
self.initialize_project_and_session()
72-
self.participant = self.get_participant(self.project_base.pk)
73-
self.participant.current_step = 3
74-
self.participant.save()
75-
76-
def test_redirect_to_donation_question(self):
77-
response = self.client.get(self.debriefing_url)
78-
self.assertEqual(response.status_code, 302)
79-
self.assertRedirects(
80-
response, reverse('ddm-pool-donate', args=[self.project_base.slug]))
81-
82-
def test_post_valid_form(self):
83-
response = self.client.post(
84-
reverse('ddm-pool-donate', args=[self.project_base.slug]),
85-
{'donation_consent': '1'}
86-
)
87-
self.assertRedirects(response, reverse('debriefing', args=[self.project_base.slug]))
88-
self.assertEqual(response.status_code, 302)
89-
self.participant.refresh_from_db()
90-
self.assertEqual(self.participant.extra_data['pool_donate'], True)
91-
92-
def test_post_invalid_form(self):
93-
response = self.client.post(
94-
reverse('ddm-pool-donate', args=[self.project_base.slug]),
95-
{'donation_consent': 'fubar'}
96-
)
97-
self.assertEqual(response.status_code, 200)
98-
self.assertTemplateUsed(response, 'ddm_pooled/pool_donation_consent.html')
99-
100-
def test_skip_donation_question(self):
101-
self.pooled_project.get_donation_consent = False
102-
self.pooled_project.save()
103-
response = self.client.get(self.debriefing_url)
104-
self.assertEqual(response.status_code, 200)
105-
self.assertTemplateUsed(response, 'ddm/public/debriefing.html')

0 commit comments

Comments
 (0)