@Test
public void testAvoidDuplicatedSamples() throws CatalogDBException {
long studyId = user3.getProjects().get(0).getStudies().get(0).getUid();
Sample sample1 = catalogDBAdaptor.getCatalogSampleDBAdaptor().insert(studyId,
new Sample().setId("sample1").setStatus(new Status()), QueryOptions.empty()).first();
Sample sample2 = catalogDBAdaptor.getCatalogSampleDBAdaptor().insert(studyId,
new Sample().setId("sample2").setStatus(new Status()), QueryOptions.empty()).first();
Individual individual = new Individual()
.setName("in2")
.setStatus(new Status())
.setSamples(Arrays.asList(sample1, sample1, sample2, new Sample().setUid(-1).setStatus(new Status())));
Individual individualStored = catalogIndividualDBAdaptor.insert(studyId, individual, null).first();
assertEquals(2, individualStored.getSamples().size());
assertTrue(individualStored.getSamples().stream().map(Sample::getUid).collect(Collectors.toSet()).containsAll(Arrays.asList(
sample1.getUid(), sample2.getUid())));
ObjectMap params = new ObjectMap(IndividualDBAdaptor.QueryParams.SAMPLES.key(), individual.getSamples());
Individual update = catalogIndividualDBAdaptor.update(individualStored.getUid(), params, QueryOptions.empty()).first();
assertEquals(2, update.getSamples().size());
assertTrue(update.getSamples().stream().map(Sample::getUid).collect(Collectors.toSet()).containsAll(Arrays.asList(sample1.getUid(),
sample2.getUid())));
}