@@ 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") |