Skip to content

Commit 0bf1f7e

Browse files
Fix for #63 - null values in FK field
1 parent a543b97 commit 0bf1f7e

File tree

3 files changed

+30
-8
lines changed

3 files changed

+30
-8
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>io.frictionlessdata</groupId>
66
<artifactId>datapackage-java</artifactId>
7-
<version>0.9.7-SNAPSHOT</version>
7+
<version>0.9.8-SNAPSHOT</version>
88
<packaging>jar</packaging>
99
<issueManagement>
1010
<url>https://github.com/frictionlessdata/datapackage-java/issues</url>
@@ -17,13 +17,13 @@
1717
</scm>
1818

1919
<properties>
20-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
20+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>Fix
2121
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2222
<java.version>17</java.version>
2323
<maven.compiler.source>${java.version}</maven.compiler.source>
2424
<maven.compiler.target>${java.version}</maven.compiler.target>
2525
<maven.compiler.compiler>${java.version}</maven.compiler.compiler>
26-
<tableschema-java-version>0.9.6</tableschema-java-version>
26+
<tableschema-java-version>0.9.8</tableschema-java-version>
2727
<junit.version>5.13.4</junit.version>
2828
<slf4j-simple.version>2.0.17</slf4j-simple.version>
2929
<apache-commons-collections4.version>4.5.0</apache-commons-collections4.version>
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
package io.frictionlessdata.datapackage;
1+
package io.frictionlessdata.datapackage.fk;
22

3+
import io.frictionlessdata.datapackage.Package;
4+
import io.frictionlessdata.datapackage.TestUtil;
35
import io.frictionlessdata.datapackage.exceptions.DataPackageValidationException;
46
import io.frictionlessdata.datapackage.resource.Resource;
57
import io.frictionlessdata.tableschema.exception.ForeignKeyException;
@@ -8,24 +10,26 @@
810
import org.junit.jupiter.api.Test;
911

1012
import java.nio.file.Path;
13+
import java.util.List;
1114

1215
import static org.junit.jupiter.api.Assertions.assertThrows;
1316

14-
public class ForeignKeysTest {
17+
public class ForeignKeyTest {
1518

1619
@Test
1720
@DisplayName("Test that foreign keys are validated correctly, good case")
1821
void testForeignKeysGoodCase() throws Exception{
1922
Path resourcePath = TestUtil.getResourcePath("/fixtures/datapackages/foreign_keys_valid.json");
20-
Package pkg = new Package(resourcePath, true);
21-
pkg.getResource("teams");
23+
io.frictionlessdata.datapackage.Package pkg = new io.frictionlessdata.datapackage.Package(resourcePath, true);
24+
Resource teams = pkg.getResource("teams");
25+
teams.checkRelations(pkg);
2226
}
2327

2428
@Test
2529
@DisplayName("Test that foreign keys are validated correctly, bad case")
2630
void testForeignKeysBadCase() throws Exception{
2731
Path resourcePath = TestUtil.getResourcePath("/fixtures/datapackages/foreign_keys_invalid.json");
28-
Package pkg = new Package(resourcePath, true);
32+
io.frictionlessdata.datapackage.Package pkg = new Package(resourcePath, true);
2933
Resource teams = pkg.getResource("teams");
3034

3135
DataPackageValidationException ex = assertThrows(DataPackageValidationException.class,
@@ -34,4 +38,17 @@ void testForeignKeysBadCase() throws Exception{
3438
Assertions.assertInstanceOf(ForeignKeyException.class, cause);
3539
Assertions.assertEquals("Foreign key validation failed: [city] -> [name]: 'Munich' not found in resource 'cities'.", cause.getMessage());
3640
}
41+
42+
@Test
43+
@DisplayName("Test checkRelations on valid resources in different-valid-data-formats datapackage")
44+
void testCheckRelationsOnAllResources() throws Exception {
45+
Path resourcePath = TestUtil.getResourcePath("/fixtures/datapackages/different-valid-data-formats/datapackage.json");
46+
Package dp = new Package(resourcePath, true);
47+
48+
dp.getResource("teams_with_headers_csv_file").checkRelations(dp);
49+
dp.getResource("teams_arrays_inline").checkRelations(dp);
50+
dp.getResource("teams_objects_inline").checkRelations(dp);
51+
dp.getResource("teams_arrays_file").checkRelations(dp);
52+
dp.getResource("teams_objects_file").checkRelations(dp);
53+
}
3754
}

src/test/resources/fixtures/datapackages/foreign_keys_valid.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
"3",
2424
"Bayern",
2525
"Munich"
26+
],
27+
[
28+
"4",
29+
"MadeUpFC",
30+
null
2631
]
2732
],
2833
"schema": {

0 commit comments

Comments
 (0)