diff --git a/CHANGELOG.md b/CHANGELOG.md index d070d7c42..3c5297e9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Validation for `EvcsInput` [#1000](https://github.com/ie3-institute/PowerSystemDataModel/issues/1000) - Scaling method in system participant copy builders [#1011](https://github.com/ie3-institute/PowerSystemDataModel/issues/1011) - Added separate field for maximum power limit for DC to evtype [#876](https://github.com/ie3-institute/PowerSystemDataModel/issues/876) +- Added test for invalid input data in `CsvRawGridSource` [#1021](https://github.com/ie3-institute/PowerSystemDataModel/issues/1021) ### Fixed - Fixed Couchbase integration tests that randomly failed [#755](https://github.com/ie3-institute/PowerSystemDataModel/issues/755) diff --git a/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvRawGridSourceTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvRawGridSourceTest.groovy index 876b73160..0ac06c263 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvRawGridSourceTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvRawGridSourceTest.groovy @@ -14,6 +14,8 @@ import edu.ie3.datamodel.io.factory.input.Transformer3WInputEntityData import edu.ie3.datamodel.io.factory.input.TypedConnectorInputEntityData import edu.ie3.datamodel.io.source.RawGridSource import edu.ie3.datamodel.io.source.TypeSource +import edu.ie3.datamodel.models.input.NodeInput +import edu.ie3.datamodel.models.input.OperatorInput import edu.ie3.datamodel.models.input.connector.LineInput import edu.ie3.datamodel.models.input.connector.SwitchInput import edu.ie3.datamodel.models.input.connector.Transformer3WInput @@ -589,4 +591,32 @@ class CsvRawGridSourceTest extends Specification implements CsvTestDataMeta { then: "the optional is empty" actual.allEntitiesAsList().empty } + + def "A CsvRawGridSource should process invalid input data as expected when requested to provide an instance of RawGridElements"() { + given: + def typeSource = new TypeSource(new CsvDataSource(csvSep, typeFolderPath, fileNamingStrategy)) + def rawGridSource = + new RawGridSource(typeSource, new CsvDataSource(csvSep, gridDefaultFolderPath, fileNamingStrategy)) { + @Override + Map getNodes() { + return Collections.emptyMap() + } + + @Override + Map getNodes(Map operators) { + return Collections.emptyMap() + } + } + + when: + def rawGridElements = Try.of(() -> rawGridSource.gridData, SourceException) + + then: + rawGridElements.failure + rawGridElements.data == Optional.empty() + + Exception ex = rawGridElements.exception.get() + ex.class == SourceException + ex.message.startsWith("edu.ie3.datamodel.exceptions.FailureException: 2 exception(s) occurred within \"LineInput\" data, one is: edu.ie3.datamodel.exceptions.FactoryException: edu.ie3.datamodel.exceptions.SourceException: Linked nodeA with UUID 4ca90220-74c2-4369-9afa-a18bf068840d was not found for entity") + } } \ No newline at end of file