use of uk.ac.bbsrc.tgac.miso.core.data.Sample in project miso-lims by miso-lims.
the class DefaultSampleServiceTest method nullSampleObjectNameTest.
@Test
public void nullSampleObjectNameTest() throws Exception {
Sample sample = null;
assertFalse("A null sample object does not contain a temporary name so must return false.", hasTemporaryName(sample));
}
use of uk.ac.bbsrc.tgac.miso.core.data.Sample in project miso-lims by miso-lims.
the class DefaultSampleServiceTest method testUpdatePlainSample.
@Test
public void testUpdatePlainSample() throws Exception {
Sample old = makePlainSample();
Mockito.when(sampleStore.getSample(old.getId())).thenReturn(old);
Sample updated = makePlainSample();
// modifiable attributes
updated.setAlias("newAlias");
updated.setDescription("newDesc");
updated.setSampleType("newType");
updated.setDetailedQcStatus(mockDetailedQcStatus(5L, "Ready", false));
updated.setQcUser(mockUser());
updated.setScientificName(mockScientificName(2L, "newSciName"));
updated.setTaxonIdentifier("newTaxonId");
updated.setVolume(new BigDecimal("5.5"));
updated.setVolumeUnits(VolumeUnit.MICROLITRES);
// unmodifiable
updated.setName("newName");
mockShellProjectWithRealLookup(updated);
sut.update(updated);
ArgumentCaptor<Sample> updatedCapture = ArgumentCaptor.forClass(Sample.class);
Mockito.verify(sampleStore).update(updatedCapture.capture());
Sample result = updatedCapture.getValue();
assertEquals("Sample sampleType should be modifiable", updated.getSampleType(), result.getSampleType());
assertEquals("Sample description should be modifiable", updated.getDescription(), result.getDescription());
assertEquals("Sample sampleType should be modifiable", updated.getSampleType(), result.getSampleType());
assertEquals("Sample detailedQcStatus should be modifiable", updated.getDetailedQcStatus(), result.getDetailedQcStatus());
assertEquals("Sample scientificName should be modifiable", updated.getScientificName(), result.getScientificName());
assertEquals("Sample taxonIdentifier should be modifiable", updated.getTaxonIdentifier(), result.getTaxonIdentifier());
assertEquals("Sample volume should be modifiable", updated.getVolume(), result.getVolume());
assertEquals("Sample project should be modifiable", updated.getProject().getId(), result.getProject().getId());
assertEquals("Sample name should NOT be modifiable", old.getName(), result.getName());
}
use of uk.ac.bbsrc.tgac.miso.core.data.Sample in project miso-lims by miso-lims.
the class DefaultSampleServiceTest method testCreateDetailedSampleNoParent.
@Test
public void testCreateDetailedSampleNoParent() throws Exception {
SampleTissue sample = makeUnsavedChildTissue();
SampleIdentity fakeParent = new SampleIdentityImpl();
fakeParent.setExternalName("non-existing");
sample.setParent(fakeParent);
mockShellProjectWithRealLookup(sample);
mockUser();
// because of mocked dao, we can't actually continue with the same parent sample that should be created, but the partial
// parent sample that gets created is caught and examined below
SampleIdentity parent = makeParentIdentityWithLookup();
Mockito.when(sampleStore.create(Mockito.any(Sample.class))).thenReturn(parent.getId());
mockValidRelationship(parent.getSampleClass(), sample.getSampleClass());
Long newId = 31L;
Mockito.when(sampleStore.create(sample)).thenReturn(newId);
Mockito.when(sampleStore.getSample(newId)).thenReturn(sample);
sut.create(sample);
ArgumentCaptor<Sample> createdCapture = ArgumentCaptor.forClass(Sample.class);
Mockito.verify(sampleStore, Mockito.times(2)).create(createdCapture.capture());
Sample partialParent = createdCapture.getAllValues().get(0);
assertTrue(LimsUtils.isIdentitySample(partialParent));
Sample partialChild = createdCapture.getAllValues().get(1);
assertTrue(LimsUtils.isTissueSample(partialChild));
ArgumentCaptor<Sample> updatedCapture = ArgumentCaptor.forClass(Sample.class);
Mockito.verify(sampleStore, Mockito.times(3)).update(updatedCapture.capture());
// note: finalParent is not actually derived from partialParent because of mocked dao (above), but it should be the parent
// linked to finalChild
Sample finalParent = updatedCapture.getAllValues().get(0);
Sample finalChild = updatedCapture.getAllValues().get(1);
assertNotNull("Child sample should have parent", ((SampleTissue) finalChild).getParent());
assertEquals("Unexpected parent ID", ((SampleTissue) finalChild).getParent().getId(), finalParent.getId());
}
use of uk.ac.bbsrc.tgac.miso.core.data.Sample in project miso-lims by miso-lims.
the class DefaultSampleServiceTest method testPlainSampleIdentificationBarcodeGeneration.
@Test
public void testPlainSampleIdentificationBarcodeGeneration() throws Exception {
Sample sample = new SampleImpl();
sample.setAlias("alias");
mockShellProjectWithRealLookup(sample);
assertNull("identificationBarcode should be null before save for test", sample.getIdentificationBarcode());
sut.setAutoGenerateIdBarcodes(true);
Mockito.when(sampleStore.getSample(Mockito.anyLong())).thenReturn(sample);
sut.create(sample);
ArgumentCaptor<Sample> updatedCapture = ArgumentCaptor.forClass(Sample.class);
Mockito.verify(sampleStore).update(updatedCapture.capture());
Sample updated = updatedCapture.getValue();
assertNotNull("identificationBarcode should be generated", updated.getIdentificationBarcode());
}
use of uk.ac.bbsrc.tgac.miso.core.data.Sample in project miso-lims by miso-lims.
the class DefaultSampleServiceTest method testCreatePlainSample.
@Test
public void testCreatePlainSample() throws Exception {
Sample sample = new SampleImpl();
String expectedAlias = "not_generated";
sample.setAlias(expectedAlias);
Project expectedProject = mockShellProjectWithRealLookup(sample);
User expectedLastModifier = mockUser();
String expectedName = "generated_name";
Mockito.when(namingScheme.generateNameFor((Sample) Mockito.any())).thenReturn(expectedName);
Mockito.when(namingScheme.generateSampleAlias((Sample) Mockito.any())).thenReturn("bad");
Mockito.when(sampleStore.getSample(Mockito.anyLong())).thenReturn(sample);
sut.create(sample);
ArgumentCaptor<Sample> createdCapture = ArgumentCaptor.forClass(Sample.class);
Mockito.verify(sampleStore).create(createdCapture.capture());
Sample created = createdCapture.getValue();
assertEquals("shell project should be replaced by real project", expectedProject.getAlias(), created.getProject().getAlias());
assertNotNull("modification details should be added", created.getLastModifier());
assertEquals("modification details should be added", expectedLastModifier.getId(), created.getLastModifier().getId());
assertTrue("expected a plain sample", LimsUtils.isPlainSample(created));
// name generators get called after initial save
ArgumentCaptor<Sample> updatedCapture = ArgumentCaptor.forClass(Sample.class);
Mockito.verify(sampleStore).update(updatedCapture.capture());
Sample updated = updatedCapture.getValue();
assertEquals("name should be generated", expectedName, updated.getName());
assertEquals("alias should not be generated", expectedAlias, updated.getAlias());
assertNull("identificationBarcode should not be generated", updated.getIdentificationBarcode());
assertTrue("expected a plain sample", LimsUtils.isPlainSample(updated));
}
Aggregations