Code Duplication    Length = 94-96 lines in 2 locations

django-data/image/validation/tests/test_tasks.py 2 locations

@@ 736-831 (lines=96) @@
733
                'animal_issues': 0, 'sample_issues': 0},
734
            pk=1)
735
736
    @patch("validation.tasks.MetaDataValidation.check_usi_structure")
737
    @patch("validation.tasks.MetaDataValidation.validate")
738
    def test_validate_submission_errors(
739
            self, my_validate, my_check):
740
        """A submission with errors is a NEED_REVISION submission"""
741
742
        # setting check_usi_structure result. now is a ValidateResultRecord
743
        result = PickableMock()
744
        result.get_overall_status.return_value = "Pass"
745
        result.get_messages.return_value = []
746
        my_check.return_value = result
747
748
        # setting a return value for check_with_ruleset
749
        result1 = ValidationResultRecord("animal_1")
750
        result1.add_validation_result_column(
751
            ValidationResultColumn(
752
                "warning",
753
                "warn message",
754
                "animal_1",
755
                "warn column")
756
        )
757
758
        result2 = ValidationResultRecord("animal_2")
759
        result2.add_validation_result_column(
760
            ValidationResultColumn(
761
                "pass",
762
                "a message",
763
                "animal_2",
764
                "")
765
        )
766
767
        result3 = ValidationResultRecord("animal_3")
768
        result3.add_validation_result_column(
769
            ValidationResultColumn(
770
                "pass",
771
                "a message",
772
                "animal_3",
773
                "")
774
        )
775
776
        result4 = ValidationResultRecord("sample_1")
777
        result4.add_validation_result_column(
778
            ValidationResultColumn(
779
                "error",
780
                "error message",
781
                "sample_1",
782
                "error column")
783
        )
784
785
        # add results to result set
786
        responses = [result1, result2, result3, result4]
787
        my_validate.side_effect = responses
788
789
        # call task
790
        res = self.my_task.run(submission_id=self.submission_id)
791
792
        # assert a success with validation taks
793
        self.assertEqual(res, "success")
794
795
        # check submission status and message
796
        self.submission.refresh_from_db()
797
798
        # check submission.state changed
799
        self.assertEqual(self.submission.status, NEED_REVISION)
800
        self.assertIn(
801
            "Error in metadata",
802
            self.submission.message)
803
804
        # check Animal (they are all ok)
805
        self.check_model_status(self.animal_qs, responses, READY)
806
807
        # sample has need revision
808
        self.check_model_status(
809
            self.sample_qs,
810
            responses[self.animal_qs.count():],
811
            NEED_REVISION)
812
813
        # test for my methods called
814
        self.assertTrue(my_check.called)
815
        self.assertTrue(my_validate.called)
816
817
        # asserting my mock objects
818
        self.assertTrue(self.read_in_ruleset.called)
819
        self.assertTrue(self.check_ruleset.called)
820
        self.assertFalse(self.validate_retry.called)
821
822
        self.check_message(
823
            message='Need Revision',
824
            notification_message=(
825
                'Validation got errors: Error in '
826
                'metadata. Need revisions before submit'),
827
            validation_message={
828
                'animals': self.n_animals, 'samples': self.n_samples,
829
                'animal_unkn': 0, 'sample_unkn': 0,
830
                'animal_issues': 0, 'sample_issues': 1},
831
            pk=1)
832
833
834
class ValidateSubmissionStatusTest(ValidateSubmissionMixin, TestCase):
@@ 641-734 (lines=94) @@
638
                'sample_issues': self.n_samples},
639
            pk=1)
640
641
    @patch("validation.tasks.MetaDataValidation.check_usi_structure")
642
    @patch("validation.tasks.MetaDataValidation.validate")
643
    def test_validate_submission_warnings(
644
            self, my_validate, my_check):
645
        """A submission with warnings is a READY submission"""
646
647
        # setting check_usi_structure result. now is a ValidateResultRecord
648
        result = PickableMock()
649
        result.get_overall_status.return_value = "Pass"
650
        result.get_messages.return_value = []
651
        my_check.return_value = result
652
653
        # setting a return value for check_with_ruleset
654
        result1 = ValidationResultRecord("animal_1")
655
        result1.add_validation_result_column(
656
            ValidationResultColumn(
657
                "warning",
658
                "warn message",
659
                "animal_1",
660
                "warn column")
661
        )
662
663
        result2 = ValidationResultRecord("animal_2")
664
        result2.add_validation_result_column(
665
            ValidationResultColumn(
666
                "pass",
667
                "a message",
668
                "animal_2",
669
                "")
670
        )
671
672
        result3 = ValidationResultRecord("animal_3")
673
        result3.add_validation_result_column(
674
            ValidationResultColumn(
675
                "pass",
676
                "a message",
677
                "animal_3",
678
                "")
679
        )
680
681
        result4 = ValidationResultRecord("sample_1")
682
        result4.add_validation_result_column(
683
            ValidationResultColumn(
684
                "pass",
685
                "a message",
686
                "sample_1",
687
                "")
688
        )
689
690
        # add results to result set
691
        responses = [result1, result2, result3, result4]
692
        my_validate.side_effect = responses
693
694
        # call task
695
        res = self.my_task.run(submission_id=self.submission_id)
696
697
        # assert a success with validation taks
698
        self.assertEqual(res, "success")
699
700
        # check submission status and message
701
        self.submission.refresh_from_db()
702
703
        # check submission.state changed
704
        self.assertEqual(self.submission.status, READY)
705
        self.assertIn(
706
            "Submission validated with some warnings",
707
            self.submission.message)
708
709
        # check Animal (they are all ok)
710
        self.check_model_status(self.animal_qs, responses, READY)
711
712
        # sample has need revision
713
        self.check_model_status(
714
            self.sample_qs,
715
            responses[self.animal_qs.count():],
716
            READY)
717
718
        # test for my methods called
719
        self.assertTrue(my_check.called)
720
        self.assertTrue(my_validate.called)
721
722
        # asserting my mock objects
723
        self.assertTrue(self.read_in_ruleset.called)
724
        self.assertTrue(self.check_ruleset.called)
725
        self.assertFalse(self.validate_retry.called)
726
727
        self.check_message(
728
            message='Ready',
729
            notification_message='Submission validated with some warnings',
730
            validation_message={
731
                'animals': self.n_animals, 'samples': self.n_samples,
732
                'animal_unkn': 0, 'sample_unkn': 0,
733
                'animal_issues': 0, 'sample_issues': 0},
734
            pk=1)
735
736
    @patch("validation.tasks.MetaDataValidation.check_usi_structure")
737
    @patch("validation.tasks.MetaDataValidation.validate")