Skip to content

Commit f8c25b5

Browse files
committed
tests: Add tests for linking series feature
Closes getpatchwork#506 Signed-off-by: andrepapoti <[email protected]>
1 parent 75d237c commit f8c25b5

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

patchwork/tests/api/test_series.py

+21
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,24 @@ def test_create_update_delete(self):
203203

204204
resp = self.client.delete(self.api_url(series.id))
205205
self.assertEqual(status.HTTP_405_METHOD_NOT_ALLOWED, resp.status_code)
206+
207+
def test_series_linking(self):
208+
series_a = self._create_series()
209+
series_b = create_series(
210+
project=series_a.project, submitter=series_a.submitter
211+
)
212+
213+
self.client.authenticate(user=series_a.submitter.user)
214+
url = reverse(
215+
'api-series-link',
216+
kwargs={'pk': series_a.id, 'related_series_id': series_b.id},
217+
)
218+
resp = self.client.options(url)
219+
resp = self.client.patch(url)
220+
221+
related_series = resp.data.get('related_series')
222+
self.assertEqual(len(related_series), 1)
223+
self.assertEqual(
224+
related_series[0]['web_url'],
225+
f'http://example.com/project/myproject/list/?series={series_b.id}',
226+
)

patchwork/tests/test_series.py

+48
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
import unittest
99

1010
from django.test import TestCase
11+
from rest_framework.request import HttpRequest
1112

1213
from patchwork import models
1314
from patchwork import parser
1415
from patchwork.tests import utils
1516
from patchwork.views.utils import patch_to_mbox
17+
from patchwork.api.series import SeriesSerializer
1618

1719

1820
TEST_SERIES_DIR = os.path.join(os.path.dirname(__file__), 'series')
@@ -804,3 +806,49 @@ def test_custom_name(self):
804806
self.assertEqual(series.name, series_name)
805807

806808
mbox.close()
809+
810+
811+
class SeriesSerializerTestCase(TestCase):
812+
def test_related_series_validation_equal_project_id(self):
813+
series_a = utils.create_series()
814+
series_b = utils.create_series(project=series_a.project)
815+
816+
mock_request = HttpRequest()
817+
mock_request.version = '1.4'
818+
mock_request.META['SERVER_NAME'] = 'example.com'
819+
mock_request.META['SERVER_PORT'] = '8000'
820+
821+
related_series_ids_a = list(
822+
series_a.related_series.all().values_list('id', flat=True)
823+
)
824+
serializer = SeriesSerializer(
825+
series_a,
826+
context={'request': mock_request},
827+
data={'related_series': related_series_ids_a + [series_b.pk]},
828+
partial=True,
829+
)
830+
serializer.is_valid()
831+
serializer.save()
832+
833+
related_series_urls = serializer.data['related_series']
834+
self.assertEqual(len(related_series_urls), 1)
835+
self.assertEqual(
836+
f'series={series_b.id}' in related_series_urls[0]['web_url'], True
837+
)
838+
839+
def test_related_series_validation_different_project_id(self):
840+
series_a = utils.create_series()
841+
series_b = utils.create_series()
842+
843+
mock_request = HttpRequest()
844+
mock_request.version = '1.4'
845+
mock_request.META['SERVER_NAME'] = 'example.com'
846+
mock_request.META['SERVER_PORT'] = '8000'
847+
848+
serializer = SeriesSerializer(
849+
series_a,
850+
context={'request': mock_request},
851+
data={'related_series': [series_b.pk]},
852+
)
853+
is_valid = serializer.is_valid()
854+
self.assertFalse(is_valid)

0 commit comments

Comments
 (0)