package devopsdistilled.operp.server.data.service; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import javax.inject.Inject; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import devopsdistilled.operp.server.context.JpaContext; import devopsdistilled.operp.server.data.entity.items.Brand; import devopsdistilled.operp.server.data.entity.items.Item; import devopsdistilled.operp.server.data.entity.items.Product; import devopsdistilled.operp.server.data.service.items.BrandService; import devopsdistilled.operp.server.data.service.items.ItemService; import devopsdistilled.operp.server.data.service.items.ProductService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { JpaContext.class }) public class ItemServiceTest { @Inject private ItemService itemService; @Inject private BrandService brandService; @Inject private ProductService productService; private Item item; private Product product; private Brand brand; @Before public void setUp() throws Exception { item = new Item(); brand = new Brand(); product = new Product(); assertNotNull(itemService); assertNotNull(brandService); assertNotNull(productService); } @Test @Transactional public void testSaveAndUpdateModel() { // This test won't run if Unique constraints are set in Item Entity. // Unique Constraints were removed to test this Test. product.setProductName("Test Product"); product = productService.save(product); assertNotNull(product.getProductId()); Product dbProduct = productService.findOne(product.getProductId()); assertNotNull(dbProduct); assertThat(new Integer(0), is(dbProduct.compareTo(product))); brand.setBrandName("Test Brand"); brand = brandService.save(brand); assertNotNull(brand.getBrandID()); Brand dbBrand = brandService.findOne(brand.getBrandID()); assertNotNull(dbBrand); assertThat(new Integer(0), is(dbBrand.compareTo(brand))); // productService.getRepo().detach(product); Product detProduct = new Product(); detProduct.setProductId(product.getProductId()); detProduct.setProductName("DetachedProduct"); // To test if save() is successful even with detached product item.setProduct(detProduct); Brand detBrand = new Brand(); detBrand.setBrandID(brand.getBrandID()); detBrand.setBrandName("DetachedBrand"); item.setBrand(brand); item = itemService.save(item); assertNotNull(item); assertNotNull(item.getItemId()); } }