예제 #1
0
 def test_unknown_frag_library(self):
     """
     case where unknown fragment library is specified
     """
     with self.assertRaisesRegex(InvalidCrystalsCSV,
                                 r"^Unknown fragment library 'Wat'."):
         parse_crystals_csv(BytesIO(UNKNOWN_FRAG_LIBRARY))
예제 #2
0
 def test_unknown_frag_code(self):
     """
     case where unknown fragment code is specified
     """
     with self.assertRaisesRegex(InvalidCrystalsCSV,
                                 r"^No fragment BT01 in 'MyLib' library."):
         parse_crystals_csv(BytesIO(UNKNOW_FRAG_CODE))
예제 #3
0
 def test_empty_sample_id(self):
     """
     one of the crystals have an empty SampleID specified
     """
     with self.assertRaisesRegex(InvalidCrystalsCSV,
                                 r"Empty SampleID specified\."):
         parse_crystals_csv(BytesIO(EMPTY_SAMPLE_ID))
예제 #4
0
 def test_unexpected_column(self):
     """
     unexpected column in the CSV
     """
     with self.assertRaisesRegex(InvalidCrystalsCSV,
                                 r"^Unexpected column: Suprise\."):
         parse_crystals_csv(BytesIO(UNEXPECTED_COLUMN))
예제 #5
0
 def test_missing_frag_code(self):
     """
     case where fragment library is specified, by there is no fragment code
     """
     with self.assertRaisesRegex(
             InvalidCrystalsCSV,
             r"^No fragment code specified for 'Cry2' crystal."):
         parse_crystals_csv(BytesIO(MISSING_FRAG_CODE))
예제 #6
0
 def test_missing_frag_library(self):
     """
     case where fragment code is present, but no library is specified
     """
     with self.assertRaisesRegex(
             InvalidCrystalsCSV,
             r"^No fragment library specified for 'Cry2' crystal."):
         parse_crystals_csv(BytesIO(MISSING_FRAG_LIBRARY))
예제 #7
0
 def test_ok(self):
     crystals = parse_crystals_csv(BytesIO(VALID_CSV))
     self.assertListEqual(
         crystals.as_list(),
         [
             {
                 "SampleID": "MID2-x0017",
                 "FragmentLibrary": "FragMAXlib",
                 "FragmentCode": "VT00249",
             },
             {
                 "SampleID": "MID2-x0018",
                 "FragmentLibrary": "FragMAXlib",
                 "FragmentCode": "VT00249",
             },
             {
                 "SampleID": "MID2-x0019",
                 "FragmentLibrary": None,
                 "FragmentCode": None,
             },
         ],
     )
예제 #8
0
 def test_missing_required_cols(self):
     """
     required columns are missing
     """
     with self.assertRaisesRegex(InvalidCrystalsCSV, "^Missing columns:.*"):
         parse_crystals_csv(BytesIO(MISSING_REQ_COLUMS))
예제 #9
0
 def test_csv_parse_error(self):
     """
     unparsable CSV case
     """
     with self.assertRaises(InvalidCrystalsCSV):
         parse_crystals_csv(BytesIO(b'"'))
예제 #10
0
 def clean_crystals_csv_file(self):
     csv_file = self.cleaned_data["crystals_csv_file"]
     try:
         return parse_crystals_csv(csv_file)
     except InvalidCrystalsCSV as e:
         raise ValidationError(str(e))