|
8 | 8 | import unittest
|
9 | 9 |
|
10 | 10 | from django.test import TestCase
|
| 11 | +from rest_framework.request import HttpRequest |
11 | 12 |
|
12 | 13 | from patchwork import models
|
13 | 14 | from patchwork import parser
|
14 | 15 | from patchwork.tests import utils
|
15 | 16 | from patchwork.views.utils import patch_to_mbox
|
| 17 | +from patchwork.api.series import SeriesSerializer |
16 | 18 |
|
17 | 19 |
|
18 | 20 | TEST_SERIES_DIR = os.path.join(os.path.dirname(__file__), 'series')
|
@@ -804,3 +806,49 @@ def test_custom_name(self):
|
804 | 806 | self.assertEqual(series.name, series_name)
|
805 | 807 |
|
806 | 808 | mbox.close()
|
| 809 | + |
| 810 | + |
| 811 | +class SeriesSerializerTestCase(TestCase): |
| 812 | + def _mock_request(self): |
| 813 | + mock_request = HttpRequest() |
| 814 | + mock_request.version = '1.4' |
| 815 | + mock_request.META['SERVER_NAME'] = 'example.com' |
| 816 | + mock_request.META['SERVER_PORT'] = '8000' |
| 817 | + |
| 818 | + return mock_request |
| 819 | + |
| 820 | + def _create_serializer(self, series, related_series, mock_request): |
| 821 | + related_ids = list( |
| 822 | + series.related_series.all().values_list('id', flat=True) |
| 823 | + ) + [related_series.pk] |
| 824 | + |
| 825 | + return SeriesSerializer( |
| 826 | + series, |
| 827 | + context={'request': mock_request}, |
| 828 | + data={'related_series': related_ids}, |
| 829 | + partial=True, |
| 830 | + ) |
| 831 | + |
| 832 | + def test_related_series_validation_equal_project_id(self): |
| 833 | + series_a = utils.create_series() |
| 834 | + series_b = utils.create_series(project=series_a.project) |
| 835 | + |
| 836 | + mock_request = self._mock_request() |
| 837 | + serializer = self._create_serializer(series_a, series_b, mock_request) |
| 838 | + serializer.is_valid() |
| 839 | + serializer.save() |
| 840 | + |
| 841 | + related_series_urls = serializer.data['related_series'] |
| 842 | + self.assertEqual(len(related_series_urls), 1) |
| 843 | + self.assertEqual( |
| 844 | + f'series={series_b.id}' in related_series_urls[0]['web_url'], True |
| 845 | + ) |
| 846 | + |
| 847 | + def test_related_series_validation_different_project_id(self): |
| 848 | + series_a = utils.create_series() |
| 849 | + series_b = utils.create_series() |
| 850 | + |
| 851 | + mock_request = self._mock_request() |
| 852 | + serializer = self._create_serializer(series_a, series_b, mock_request) |
| 853 | + is_valid = serializer.is_valid() |
| 854 | + self.assertFalse(is_valid) |
0 commit comments