/*
* Copyright 2015 Trento Rise (trentorise.eu)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package eu.trentorise.opendata.jackan.test.dcat;
import com.google.common.collect.Lists;
import eu.trentorise.opendata.jackan.model.CkanDataset;
import eu.trentorise.opendata.jackan.model.CkanPair;
import eu.trentorise.opendata.jackan.model.CkanResource;
import eu.trentorise.opendata.jackan.dcat.DcatFactory;
import eu.trentorise.opendata.jackan.test.JackanTestConfig;
import eu.trentorise.opendata.traceprov.dcat.DcatDataset;
import eu.trentorise.opendata.traceprov.dcat.DcatDistribution;
import java.util.Locale;
import java.util.UUID;
import junitparams.JUnitParamsRunner;
import org.junit.After;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* * TODO methods don't really assert anything
*
* @author David Leoni
* @since 0.4.1
*/
@RunWith(JUnitParamsRunner.class)
public class DcatFactoryTest {
private static final String CATALOG_URL = "https://github.com/opendatatrentino/jackan";
private DcatFactory dcatFactory;
@BeforeClass
public static void setUpClass() {
JackanTestConfig.of().loadConfig();
}
@Before
public void setUp() {
dcatFactory = new DcatFactory();
}
@After
public void tearDown() {
dcatFactory = null;
}
private static String makeUuid(int i) {
if (i < 0 || i > 255) {
throw new RuntimeException("Provided integer must be 0 <= i < 255");
}
byte[] bs = {(byte) i};
return UUID.nameUUIDFromBytes(bs).toString();
}
@Test
public void testDistribution() {
CkanResource res = new CkanResource();
DcatDistribution distribution = new DcatFactory().makeDistribution(
res,
CATALOG_URL,
makeUuid(1),
"cc-zero",
Locale.ITALIAN);
}
@Test
public void testDatasetOthers() {
CkanDataset dataset = new CkanDataset();
dataset.putOthers("language", "[\"it\"]");
DcatDataset dcatDataset = dcatFactory.makeDataset(dataset, CATALOG_URL, Locale.ENGLISH);
assertEquals(1, dcatDataset.getLanguages().size());
assertEquals(Locale.ITALIAN, dcatDataset.getLanguages().get(0));
}
@Test
public void testDatasetExtras() {
CkanDataset dataset = new CkanDataset();
dataset.setExtras(Lists.newArrayList(new CkanPair("language", "[\"it\"]")));
DcatDataset dcatDataset = dcatFactory.makeDataset(dataset, CATALOG_URL, Locale.ENGLISH);
assertEquals(1, dcatDataset.getLanguages().size());
assertEquals(Locale.ITALIAN, dcatDataset.getLanguages().get(0));
}
@Test
public void testDatasetWithResource() {
CkanDataset dataset = new CkanDataset();
dataset.setId(makeUuid(1));
dataset.setResources(Lists.newArrayList(new CkanResource(CATALOG_URL, null)));
DcatDataset dcatDataset = dcatFactory.makeDataset(dataset, CATALOG_URL, Locale.ENGLISH);
assertEquals(1, dcatDataset.getDistributions().size());
assertEquals(CATALOG_URL, dcatDataset.getDistributions().get(0).getAccessURL());
}
@Test
public void exampleFactory() {
DcatFactory dcatFactory = new DcatFactory();
CkanDataset ckanDataset = new CkanDataset("my-dataset");
DcatDataset dcatDataset
= dcatFactory.makeDataset(
ckanDataset,
"http://dati.trentino.it", // default locale of metadata
Locale.ITALIAN);
CkanResource ckanResource = new CkanResource("http://my-department.org/expenses.csv", "my-dataset");
DcatDistribution dcatDistribution
= dcatFactory.makeDistribution(
ckanResource,
"http://dati.trentino.it",
"my-dataset", // owner dataset id
"cc-zero", // license id
Locale.ITALIAN); // default locale of metadata
}
}