|
1 | 1 | package life.qbic.datamodel.dtos.business |
2 | 2 |
|
3 | 3 | import life.qbic.datamodel.dtos.business.facilities.Facility |
| 4 | +import life.qbic.datamodel.dtos.business.services.DataStorage |
| 5 | +import life.qbic.datamodel.dtos.business.services.ExternalServiceProduct |
| 6 | +import life.qbic.datamodel.dtos.business.services.MetabolomicAnalysis |
4 | 7 | import life.qbic.datamodel.dtos.business.services.PrimaryAnalysis |
5 | 8 | import life.qbic.datamodel.dtos.business.services.Product |
6 | 9 | import life.qbic.datamodel.dtos.business.services.ProductUnit |
| 10 | +import life.qbic.datamodel.dtos.business.services.ProjectManagement |
| 11 | +import life.qbic.datamodel.dtos.business.services.ProteomicAnalysis |
| 12 | +import life.qbic.datamodel.dtos.business.services.SecondaryAnalysis |
7 | 13 | import life.qbic.datamodel.dtos.business.services.Sequencing |
8 | 14 | import spock.lang.Specification |
9 | 15 | import spock.lang.Unroll |
@@ -101,5 +107,23 @@ class ProductItemSpec extends Specification { |
101 | 107 | product.currency.displayName == "Euro" |
102 | 108 | } |
103 | 109 |
|
104 | | - |
| 110 | + def "ProductItems allow partial quantities for all services"() { |
| 111 | + |
| 112 | + when: "ProductItems for all service products can be created" |
| 113 | + ProductItem productItem = new ProductItem(quantity, product, totalPrice, quantityDiscount) |
| 114 | + |
| 115 | + then: "No exceptions are thrown" |
| 116 | + noExceptionThrown() |
| 117 | + |
| 118 | + where: "for every service product" |
| 119 | + quantity | internalUnitPrice | product | totalPrice | quantityDiscount |
| 120 | + 1.1 | 1 | new Sequencing("Sequencing", "Sequencing description", 1.0, 3.0, ProductUnit.PER_SAMPLE, 1, Facility.QBIC) | quantity * internalUnitPrice | 0.0 |
| 121 | + 2.2 | 2 | new PrimaryAnalysis("Primary Analysis", "Primary Analysis description", 2.0, 4.0, ProductUnit.PER_CYCLE, 2, Facility.QBIC) | quantity * internalUnitPrice | 0.0 |
| 122 | + 3.3 | 3 | new SecondaryAnalysis("Secondary Analysis", "Secondary Analysis description", 3.0, 5.0, ProductUnit.PER_DATASET, 3, Facility.QBIC) | quantity * internalUnitPrice | 0.0 |
| 123 | + 4.4 | 4 | new ProteomicAnalysis("Proteomic Analysis", "Proteomic Analysis description", 4.0, 6.0, ProductUnit.PER_FLOW_CELL, 4, Facility.QBIC) | quantity * internalUnitPrice | 0.0 |
| 124 | + 5.5 | 5 | new MetabolomicAnalysis("Metabolomic Analysis", "Metabolomic Analysis description", 5.0, 7.0, ProductUnit.PER_100_MICROGRAM_PEPTIDE_CHANNEL, 5, Facility.QBIC) | quantity * internalUnitPrice | 0.0 |
| 125 | + 6.6 | 6 | new ProjectManagement("Project Management", "Project Management description", 6.0, 8.0, ProductUnit.PER_HOUR, 6, Facility.QBIC) | quantity * internalUnitPrice | 0.0 |
| 126 | + 7.7 | 7 | new DataStorage("Data Storage", "Data Storage description", 7.0, 9.0, ProductUnit.PER_GIGABYTE, 7, Facility.QBIC) | quantity * internalUnitPrice | 0.0 |
| 127 | + 8.8 | 8 | new ExternalServiceProduct("External Service", "External Service description", 8.0, 10.0, ProductUnit.PER_PROJECT, 8, Facility.CEGAT) | quantity * 10 | 0.0 |
| 128 | + } |
105 | 129 | } |
0 commit comments