def test_clean_no_committer(self): """Testing UploadCommitForm.clean when no committer_ fields are present """ field_names = { 'committer_date', 'committer_email', 'committer_name', } diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form_data = self._default_form_data.copy() for field in field_names: del form_data[field] form = UploadCommitForm(diffset=self.diffset, data=form_data, files={ 'diff': diff, }) self.assertFalse(form.is_valid()) self.assertEqual( form.errors, {field: ['This field is required.'] for field in field_names})
def test_clean_commiter_unsupported(self): """Testing UploadCommitForm.clean when committer_ fields are present for a SCMTool that doesn't support them """ if not is_exe_in_path('hg'): raise nose.SkipTest('Hg is not installed') self.repository.tool = Tool.objects.get(name='Mercurial') self.repository.save() diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form = UploadCommitForm(diffset=self.diffset, data=self._default_form_data.copy(), files={ 'diff': diff, }) self.assertTrue(form.is_valid()) self.assertNotIn('committer_date', form.cleaned_data) self.assertNotIn('committer_email', form.cleaned_data) self.assertNotIn('committer_name', form.cleaned_data)
def test_clean_no_committer(self): """Testing UploadCommitForm.clean when no committer_ fields are present """ field_names = { 'committer_date', 'committer_email', 'committer_name', } diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form_data = self._default_form_data.copy() for field in field_names: del form_data[field] form = UploadCommitForm( diffset=self.diffset, data=form_data, files={ 'diff': diff, }) self.assertFalse(form.is_valid()) self.assertEqual(form.errors, { field: ['This field is required.'] for field in field_names })
def test_clean_parent_diff_path(self): """Testing UploadCommitForm.clean() for a subsequent commit with a parent diff """ diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA, content_type='text/x-patch') parent_diff = SimpleUploadedFile('parent_diff', self.DEFAULT_GIT_FILEDIFF_DATA, content_type='text/x-patch') form = UploadCommitForm(diffset=self.diffset, data=self._default_form_data.copy(), files={ 'diff': diff, 'parent_diff': parent_diff, }) self.assertTrue(form.is_valid()) form.create() form = UploadCommitForm(diffset=self.diffset, data=dict( self._default_form_data, **{ 'parent_id': 'r1', 'commit_id': 'r2', }), files={ 'diff': diff, 'parent_diff': parent_diff, }) self.assertTrue(form.is_valid()) self.assertNotIn('parent_diff', form.errors)
def test_clean_committer_date(self): """Testing UploadCommitForm.clean_committer_date""" diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA, content_type='text/x-patch') form = UploadCommitForm(diffset=self.diffset, data=dict(self._default_form_data, **{ 'committer_date': 'Jun 1 1970', }), files={ 'diff': diff, }) self.assertFalse(form.is_valid()) self.assertIn('committer_date', form.errors)
def test_clean_committer_date(self): """Testing UploadCommitForm.clean_committer_date""" diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form = UploadCommitForm( diffset=self.diffset, data=dict(self._default_form_data, **{ 'committer_date': 'Jun 1 1970', }), files={ 'diff': diff, }) self.assertFalse(form.is_valid()) self.assertIn('committer_date', form.errors)
def test_create(self): """Testing UploadCommitForm.create""" diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA, content_type='text/x-patch') form = UploadCommitForm(diffset=self.diffset, data=self._default_form_data.copy(), files={ 'diff': diff, }) self.assertTrue(form.is_valid()) commit = form.create() self.assertEqual(self.diffset.files.count(), 1) self.assertEqual(self.diffset.commits.count(), 1) self.assertEqual(commit.files.count(), 1) self.assertEqual(set(self.diffset.files.all()), set(commit.files.all()))
def test_create(self): """Testing UploadCommitForm.create""" diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form = UploadCommitForm( diffset=self.diffset, data=self._default_form_data.copy(), files={ 'diff': diff, }) self.assertTrue(form.is_valid()) commit = form.create() self.assertEqual(self.diffset.files.count(), 1) self.assertEqual(self.diffset.commits.count(), 1) self.assertEqual(commit.files.count(), 1) self.assertEqual(set(self.diffset.files.all()), set(commit.files.all()))
def test_clean_commiter_unsupported(self): """Testing UploadCommitForm.clean when committer_ fields are present for a SCMTool that doesn't support them """ self.repository.tool = Tool.objects.get(name='Mercurial') self.repository.save() diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form = UploadCommitForm( diffset=self.diffset, data=self._default_form_data.copy(), files={ 'diff': diff, }) self.assertTrue(form.is_valid()) self.assertNotIn('committer_date', form.cleaned_data) self.assertNotIn('committer_email', form.cleaned_data) self.assertNotIn('committer_name', form.cleaned_data)
def test_clean_published_diff(self): """Testing UploadCommitForm.clean() for a DiffSet that has already been published """ diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form = UploadCommitForm( diffset=self.diffset, data=self._default_form_data, files={ 'diff': diff, }) self.assertTrue(form.is_valid()) form.create() self.diffset.history = DiffSetHistory.objects.create() self.diffset.save(update_fields=('history_id',)) form = UploadCommitForm( diffset=self.diffset, data=dict( self._default_form_data, parent_id='r1', commit_id='r0', ), files={ 'diff_path': SimpleUploadedFile( 'diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch'), }) self.assertFalse(form.is_valid()) self.assertNotEqual(form.non_field_errors, [])
def test_clean_parent_diff_path(self): """Testing UploadCommitForm.clean() for a subsequent commit with a parent diff """ diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') parent_diff = SimpleUploadedFile('parent_diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form = UploadCommitForm( diffset=self.diffset, data=self._default_form_data.copy(), files={ 'diff': diff, 'parent_diff': parent_diff, }) self.assertTrue(form.is_valid()) form.create() form = UploadCommitForm( diffset=self.diffset, data=dict( self._default_form_data, **{ 'parent_id': 'r1', 'commit_id': 'r2', } ), files={ 'diff': diff, 'parent_diff': parent_diff, }) self.assertTrue(form.is_valid()) self.assertNotIn('parent_diff', form.errors)
def test_clean_published_diff(self): """Testing UploadCommitForm.clean() for a DiffSet that has already been published """ diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch') form = UploadCommitForm( diffset=self.diffset, data=self._default_form_data, files={ 'diff': diff, }) self.assertTrue(form.is_valid()) form.create() self.diffset.history = DiffSetHistory.objects.create() self.diffset.save(update_fields=('history_id',)) form = UploadCommitForm( diffset=self.diffset, data=dict( self._default_form_data, parent_id='r1', commit_id='r0', ), files={ 'diff_path': SimpleUploadedFile( 'diff', self.DEFAULT_GIT_FILEDIFF_DATA_DIFF, content_type='text/x-patch'), }) self.assertFalse(form.is_valid()) self.assertNotEqual(form.non_field_errors, [])