package com.belladati.sdk.dataset.impl;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertSame;
import org.testng.annotations.Test;
import com.belladati.sdk.dataset.DataSet;
import com.belladati.sdk.dataset.impl.DataSetImpl;
import com.belladati.sdk.dataset.source.DataSource;
import com.belladati.sdk.dataset.source.impl.DataSourceImpl;
import com.belladati.sdk.test.SDKTest;
import com.belladati.sdk.util.CachedList;
import com.fasterxml.jackson.databind.JsonNode;
@Test
public class DataSourcesTest extends SDKTest {
private final String dsId = "ds-id";
private final String dataSourcesUri = String.format("/api/dataSets/%s/dataSources", dsId);
private final String id = "123";
private final String name = "data source name";
private final String type = "some type";
/** Data source is loaded correctly from service. */
public void loadDataSource() {
CachedList<DataSource> dataSources = service.getDataSources(dsId);
registerSingleDataSource(builder.buildDataSourceNode(id, name, type));
dataSources.load();
server.assertRequestUris(dataSourcesUri);
assertEquals(dataSources.toList().size(), 1);
DataSource source = dataSources.toList().get(0);
assertEquals(source.getId(), id);
assertEquals(source.getName(), name);
assertEquals(source.getType(), type);
assertEquals(source.toString(), name);
}
/** Data source is loaded correctly from data set. */
public void loadFromDataSet() {
DataSet dataSet = new DataSetImpl(service, builder.buildDataSetNode(dsId, "", null, null, null));
CachedList<DataSource> dataSources = dataSet.getDataSources();
registerSingleDataSource(builder.buildDataSourceNode(id, name, type));
dataSources.load();
server.assertRequestUris(dataSourcesUri);
assertEquals(dataSources.toList().size(), 1);
DataSource source = dataSources.toList().get(0);
assertEquals(source.getId(), id);
assertEquals(source.getName(), name);
assertEquals(source.getType(), type);
assertEquals(source.toString(), name);
}
/** given the same ID, the same collection is returned */
public void sameCollection() {
DataSet dataSet = new DataSetImpl(service, builder.buildDataSetNode(dsId, "", null, null, null));
assertSame(dataSet.getDataSources(), service.getDataSources(dsId));
}
/** equals/hashcode for data source */
public void dataSourceEquality() {
DataSource d1 = new DataSourceImpl(service, builder.buildDataSourceNode(id, name, type));
DataSource d2 = new DataSourceImpl(service, builder.buildDataSourceNode(id, "", ""));
DataSource d3 = new DataSourceImpl(service, builder.buildDataSourceNode("otherId", name, type));
assertEquals(d1, d2);
assertEquals(d1.hashCode(), d2.hashCode());
assertFalse(d1.equals(new Object()));
assertNotEquals(d1, d3);
}
/** trailing 'ImportTable' is removed from type */
public void importTableType() {
assertEquals(new DataSourceImpl(service, builder.buildDataSourceNode(id, name, type + "ImportTable")).getType(), type);
}
private void registerSingleDataSource(JsonNode node) {
server.registerPaginatedItem(dataSourcesUri, "dataSources", node);
}
}