package org.openlmis.stockmanagement.repository; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.openlmis.core.builder.ProductBuilder; import org.openlmis.core.domain.Product; import org.openlmis.db.categories.UnitTests; import org.openlmis.stockmanagement.domain.Lot; import org.openlmis.stockmanagement.repository.mapper.LotMapper; import java.util.Date; import static com.natpryce.makeiteasy.MakeItEasy.*; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @Category(UnitTests.class) @RunWith(MockitoJUnitRunner.class) public class LotRepositoryTest { @Mock LotMapper mapper; LotRepository repository; private static final Product defaultProduct; private Lot lot; static { defaultProduct = make(a(ProductBuilder.defaultProduct, with(ProductBuilder.productId, 1L))); } @Before public void setup() { lot = new Lot(); lot.setProduct(defaultProduct); lot.setLotCode("A1"); lot.setManufacturerName("Manu"); lot.setManufactureDate(new Date()); lot.setExpirationDate(new Date()); repository = new LotRepository(mapper); } @Test public void shouldGetExistingLot() { when(mapper.getByObject(lot)).thenReturn(lot); Lot l = repository.getOrCreateLot(lot); assertEquals(l.getLotCode(), lot.getLotCode()); assertEquals(l.getManufacturerName(), lot.getManufacturerName()); assertEquals(l.getExpirationDate(), lot.getExpirationDate()); } @Test public void shouldCreateNonExistingLot() { when(mapper.getByObject(lot)).thenReturn(null); Lot l = repository.getOrCreateLot(lot); verify(mapper).insert(lot); assertEquals(l.getLotCode(), lot.getLotCode()); assertEquals(l.getManufacturerName(), lot.getManufacturerName()); assertEquals(l.getExpirationDate(), lot.getExpirationDate()); } }