@@ -2,8 +2,10 @@ package life.qbic.datamodel.datasets.datastructure
22
33import life.qbic.datamodel.datasets.ExperimentFolder
44import life.qbic.datamodel.datasets.OxfordNanoporeMeasurement
5+ import life.qbic.datamodel.datasets.datastructure.files.nanopore.BamFile
56import life.qbic.datamodel.datasets.datastructure.files.nanopore.Fast5File
67import life.qbic.datamodel.datasets.datastructure.files.nanopore.FastQFile
8+ import life.qbic.datamodel.datasets.datastructure.files.nanopore.Pod5File
79import life.qbic.datamodel.datasets.datastructure.folders.DataFolder
810import life.qbic.datamodel.datasets.datastructure.folders.nanopore.*
911import spock.lang.Shared
@@ -38,9 +40,13 @@ class OxfordNanoporeMeasurementSpec extends Specification {
3840 @Shared
3941 UnclassifiedFastQFolder unclassifiedFastQFolder
4042 @Shared
41- Pod5SkipFolder pod5SkipFolder
43+ Pod5PassFolder pod5PassedFolder
4244 @Shared
43- Fast5SkipFolder fast5SkipFolder
45+ Pod5FailFolder pod5FailedFolder
46+ @Shared
47+ BamPassFolder bamPassedFolder
48+ @Shared
49+ BamFailFolder bamFailedFolder
4450
4551 @Shared
4652 Map metaData
@@ -62,6 +68,8 @@ class OxfordNanoporeMeasurementSpec extends Specification {
6268 ]
6369 def fast5File = Fast5File . create(" test.fast5" , " root/test.fast5" )
6470 def fastQFile = FastQFile . create(" test.fastq" , " root/test.fastq" )
71+ def pod5File = Pod5File . create(" test.pod5" , " root/test.pod5" )
72+ def bamFile = BamFile . create(" test.bam" , " root/test.bam" )
6573 fast5FailedFolder = Fast5FailFolder . create(" fast5_fail" ," root/fast5_fail" , [fast5File])
6674 fast5PassedFolder = Fast5PassFolder . create(" fast5_pass" ," root/fast5_pass" , [fast5File])
6775 fastQFailedFolder = FastQFailFolder . create(" fastq_fail" , " root/fastq_fail" , [fastQFile])
@@ -74,6 +82,10 @@ class OxfordNanoporeMeasurementSpec extends Specification {
7482 // Content for the pooled samples including unclassified folders
7583 unclassifiedFast5Folder = UnclassifiedFast5Folder . create(" unclassified" , " fast5_fail/unclassified" , [fast5File])
7684 unclassifiedFastQFolder = UnclassifiedFastQFolder . create(" unclassified" , " fastq_pass/unclassified" , [fastQFile])
85+ bamFailedFolder = BamFailFolder . create(" bam_fail" , " root/bam_fail" , [bamFile])
86+ bamPassedFolder = BamPassFolder . create(" bam_pass" ," root/bam_pass" , [bamFile])
87+ pod5FailedFolder = Pod5FailFolder . create(" pod5_fail" , " root/pod5_fail" , [pod5File])
88+ pod5PassedFolder = Pod5PassFolder . create(" pod5_pass" ," root/pod5_pass" , [pod5File])
7789 }
7890
7991 def " create simple measurement successfully" () {
@@ -235,16 +247,33 @@ class OxfordNanoporeMeasurementSpec extends Specification {
235247
236248 }
237249
238- def " If both pod5 skip and fast5 skip folder are empty, an IllegalStateException shall be thrown" () {
250+ def " If both pod5 pass and pod5 fail folder are empty, an IllegalStateException shall be thrown" () {
239251 given :
240- def emptyPod5SkipFolder = Pod5SkipFolder . create(" pod5_skip " ," root/pod5_skip " , [])
241- def emptyFast5SkipFolder = Fast5SkipFolder . create(" fast5_skip " ," root/fast5_skip " , [])
252+ def emptyPod5PassFolder = Pod5PassFolder . create(" pod5_pass " ," root/pod5_pass " , [])
253+ def emptyPod5FailFolder = Pod5FailFolder . create(" pod5_fail " ," root/pod5_fail " , [])
242254
243255 when :
244256 OxfordNanoporeMeasurement . create(
245257 " 20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
246258 " path/20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
247- [emptyPod5SkipFolder, emptyFast5SkipFolder],
259+ [emptyPod5PassFolder, emptyPod5FailFolder],
260+ metaData)
261+
262+ then :
263+ thrown(IllegalStateException )
264+
265+ }
266+
267+ def " If both bam pass and bam fail folder are empty, an IllegalStateException shall be thrown" () {
268+ given :
269+ def emptyBamPassFolder = BamPassFolder . create(" bam_pass" ," root/bam_pass" , [])
270+ def emptyBamFailFolder = BamFailFolder . create(" bam_fail" ," root/bam_fail" , [])
271+
272+ when :
273+ OxfordNanoporeMeasurement . create(
274+ " 20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
275+ " path/20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
276+ [emptyBamPassFolder, emptyBamFailFolder],
248277 metaData)
249278
250279 then :
@@ -282,6 +311,46 @@ class OxfordNanoporeMeasurementSpec extends Specification {
282311 noExceptionThrown()
283312 }
284313
314+ def " If either bam pass or bam folder is empty, no IllegalStateException shall be thrown" () {
315+ given :
316+ def emptyBamFailFolder = BamFailFolder . create(" bam_fail" ," root/bam_fail" , [])
317+ def emptyBamPassFolder = BamPassFolder . create(" bam_pass" ," root/bam_pass" , [])
318+ when :
319+ OxfordNanoporeMeasurement . create(
320+ " 20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
321+ " path/20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
322+ [bamPassedFolder, emptyBamFailFolder],
323+ metaData)
324+ OxfordNanoporeMeasurement . create(
325+ " 20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
326+ " path/20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
327+ [emptyBamPassFolder, bamFailedFolder],
328+ metaData)
329+ then :
330+ noExceptionThrown()
331+ }
332+
333+ def " If either pod5 pass or pod5 folder is empty, no IllegalStateException shall be thrown" () {
334+ given :
335+ def emptyPod5FailedFolder = Pod5FailFolder . create(" pod5_fail" ," root/pod5_fail" , [])
336+ def emptyPod5PassedFolder = Pod5PassFolder . create(" pod5_pass" ," root/pod5_pass" , [])
337+ when :
338+ OxfordNanoporeMeasurement . create(
339+ " 20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
340+ " path/20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
341+ [pod5PassedFolder, emptyPod5FailedFolder],
342+ metaData)
343+
344+ OxfordNanoporeMeasurement . create(
345+ " 20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
346+ " path/20200219_1107_1-E3-H3_PAE26974_454b8dc6" ,
347+ [emptyPod5PassedFolder, pod5FailedFolder],
348+ metaData)
349+ then :
350+ noExceptionThrown()
351+ }
352+
353+
285354 def " missing adapter metadata shall return an empty String and not be null" () {
286355 given :
287356 def metaData = [
0 commit comments