package org.molgenis.data.support; import org.molgenis.data.Entity; import org.molgenis.data.EntityManager; import org.molgenis.data.Fetch; import org.molgenis.data.meta.model.Attribute; import org.molgenis.data.meta.model.EntityType; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import static org.mockito.Mockito.*; public class PartialEntityTest { private PartialEntity partialEntity; private Entity originalEntity; private Entity decoratedEntity; private Fetch fetch; private EntityManager entityManager; private EntityType meta; @BeforeMethod public void setUpBeforeMethod() { Attribute idAttr = when(mock(Attribute.class).getName()).thenReturn("id").getMock(); meta = when(mock(EntityType.class).getName()).thenReturn("entity").getMock(); when(meta.getIdAttribute()).thenReturn(idAttr); originalEntity = mock(Entity.class); decoratedEntity = mock(Entity.class); when(decoratedEntity.getEntityType()).thenReturn(meta); when(decoratedEntity.getIdValue()).thenReturn("id"); fetch = new Fetch().field("id"); entityManager = mock(EntityManager.class); when(entityManager.getReference(meta, "id")).thenReturn(originalEntity); partialEntity = new PartialEntity(decoratedEntity, fetch, entityManager); } @Test public void get() { partialEntity.get("id"); verify(decoratedEntity, times(1)).get("id"); verifyZeroInteractions(entityManager); } @Test public void getNotInFetch() { partialEntity.get("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getBoolean() { partialEntity.getBoolean("id"); verify(decoratedEntity, times(1)).getBoolean("id"); verifyZeroInteractions(entityManager); } @Test public void getBooleanNotInFetch() { partialEntity.getBoolean("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getDate() { partialEntity.getDate("id"); verify(decoratedEntity, times(1)).getDate("id"); verifyZeroInteractions(entityManager); } @Test public void getDateNotInFetch() { partialEntity.getDate("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getDouble() { partialEntity.getDouble("id"); verify(decoratedEntity, times(1)).getDouble("id"); verifyZeroInteractions(entityManager); } @Test public void getDoubleNotInFetch() { partialEntity.getDouble("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getEntitiesString() { partialEntity.getEntities("id"); verify(decoratedEntity, times(1)).getEntities("id"); verifyZeroInteractions(entityManager); } @Test public void getEntitiesStringNotInFetch() { partialEntity.getEntities("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getEntitiesStringClassE() { partialEntity.getEntities("id", Entity.class); verify(decoratedEntity, times(1)).getEntities("id", Entity.class); verifyZeroInteractions(entityManager); } @Test public void getEntitiesStringClassENotInFetch() { partialEntity.getEntities("label", Entity.class); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getEntityString() { partialEntity.getEntity("id"); verify(decoratedEntity, times(1)).getEntity("id"); verifyZeroInteractions(entityManager); } @Test public void getEntityStringNotInFetch() { partialEntity.getEntity("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getEntityStringClassE() { partialEntity.getEntity("id", Entity.class); verify(decoratedEntity, times(1)).getEntity("id", Entity.class); verifyZeroInteractions(entityManager); } @Test public void getEntityStringClassENotInFetch() { partialEntity.getEntity("label", Entity.class); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getInt() { partialEntity.getInt("id"); verify(decoratedEntity, times(1)).getInt("id"); verifyZeroInteractions(entityManager); } @Test public void getIntNotInFetch() { partialEntity.getInt("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getLong() { partialEntity.getLong("id"); verify(decoratedEntity, times(1)).getLong("id"); verifyZeroInteractions(entityManager); } @Test public void getLongNotInFetch() { partialEntity.getLong("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getString() { partialEntity.getString("id"); verify(decoratedEntity, times(1)).getString("id"); verifyZeroInteractions(entityManager); } @Test public void getStringNotInFetch() { partialEntity.getString("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getTimestamp() { partialEntity.getTimestamp("id"); verify(decoratedEntity, times(1)).getTimestamp("id"); verifyZeroInteractions(entityManager); } @Test public void getTimestampNotInFetch() { partialEntity.getTimestamp("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void getUtilDate() { partialEntity.getUtilDate("id"); verify(decoratedEntity, times(1)).getUtilDate("id"); verifyZeroInteractions(entityManager); } @Test public void getUtilDateNotInFetch() { partialEntity.getUtilDate("label"); verify(entityManager, times(1)).getReference(meta, "id"); } @Test public void setStringObject() { Object obj = mock(Object.class); partialEntity.set("test", obj); verify(decoratedEntity, times(1)).set("test", obj); verifyZeroInteractions(entityManager); } @Test public void setEntity() { Entity e = mock(Entity.class); partialEntity.set(e); verify(decoratedEntity, times(1)).set(e); verifyZeroInteractions(entityManager); } @Test public void getAttributeNames() { partialEntity.getAttributeNames(); verify(decoratedEntity, times(1)).getAttributeNames(); verifyZeroInteractions(entityManager); } @Test public void getEntityType() { partialEntity.getEntityType(); verify(decoratedEntity, times(1)).getEntityType(); verifyZeroInteractions(entityManager); } @Test public void getIdValue() { partialEntity.getIdValue(); verify(decoratedEntity, times(1)).getIdValue(); verifyZeroInteractions(entityManager); } @Test public void getLabelValue() { partialEntity.getLabelValue(); verify(decoratedEntity, times(1)).getLabelValue(); verifyZeroInteractions(entityManager); } }