Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import com.agroservices.logic.PersistenceFacade; import com.agroservices.model.Campesino; import com.agroservices.model.Producto; import com.agroservices.model.ProductoEnVenta; import com.agroservices.model.Ubicacion; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; /** * * @author 3079945 */ public class PruebasConsultaUno { private SessionFactory sessionFactory; private Session session = null; /** * Operaciones que se realizan antes de ejecutar el banco de pruebas. * En este caso se crea una misma sesin que ser usada en todas las * pruebas. */ @Before public void setupSession() { Configuration configuration = new Configuration(); configuration.configure("hibernate.cfg.xml"); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); session = sessionFactory.openSession(); } /** * Operaciones que se realizan cuando finalice la ejecucin de las pruebas. * En este caso se cierra la sesi_n y la f_brica de sesiones. */ @After public void closeResources() { session.close(); sessionFactory.close(); } @Test public void unCampesinoPuedeProveerElProducto() { Transaction tx = session.beginTransaction(); /**************************************************** Almacenar los Productos de la prueba *****************************************************/ Producto p1 = new Producto("Papa Criolla", 60, false); Producto p2 = new Producto("Papa Sabanera", 90, false); Producto p3 = new Producto("Tomate Chonto", 30, true); session.save(p1); session.save(p2); session.save(p3); /**************************************************** Almacenar las Ubicaciones de los campesinos *****************************************************/ Ubicacion u1 = new Ubicacion("Calle 123", "Cajica", "Cundinamarca", "20", "70"); Ubicacion u2 = new Ubicacion("Calle 234", "Chia", "Cundinamarca", "20", "80"); Ubicacion u3 = new Ubicacion("Casa de pobre y sin presencia", "Quibdo", "Choco", "40", "-80"); session.save(u1); session.save(u2); session.save(u3); /**************************************************** Almacenar los campesinos *****************************************************/ Campesino c1 = new Campesino(1, u1, "Guillermo Leon", "Alvarez Salamanca", "1234567"); Campesino c2 = new Campesino(2, u2, "Andres Felipe", "Barrero Chacon", "1234567"); Campesino c3 = new Campesino(3, u3, "Andres Mauricio", "Melo Torres", "1234567"); session.save(c1); session.save(c2); session.save(c3); /**************************************************** Almacenar los productos en venta del campesino 1 *****************************************************/ Set<ProductoEnVenta> s1 = new HashSet<>(); ProductoEnVenta p1c1 = new ProductoEnVenta(c1, p1, "Muy buena calidad de papa criolla", new Date(2015 - 1900, 2, 5), (float) (60.5), 1000); ProductoEnVenta p2c1 = new ProductoEnVenta(c1, p2, "Papa sabanera muyyyyyy rica :P", new Date(2015 - 1900, 8, 7), (float) (20.5), 2000); session.save(p1c1); session.save(p2c1); s1.add(p1c1); s1.add(p2c1); c1 = (Campesino) session.load(Campesino.class, 1); c1.setProductosEnVentas(s1); session.update(c1); /**************************************************** Almacenar los productos en venta del campesino 2 *****************************************************/ Set<ProductoEnVenta> s2 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c2 = new ProductoEnVenta(c2, p1, "La mejor papa criolla", new Date(2015 - 1900, 8, 8), (float) 150.6, 1100); session.save(p1c2); s2.add(p1c2); c2 = (Campesino) session.load(Campesino.class, 2); c2.setProductosEnVentas(s2); session.update(c2); /**************************************************** Almacenar los productos en venta del campesino 3 *****************************************************/ Set<ProductoEnVenta> s3 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c3 = new ProductoEnVenta(c3, p3, "El tomate de Zlatan", new Date(2015 - 1900, 8, 8), (float) 300.50, 2500); session.save(p1c3); s3.add(p1c3); c3 = (Campesino) session.load(Campesino.class, 3); c3.setProductosEnVentas(s3); session.update(c3); /**************************************************** Se realizara la consulta de los campesinos que pueden proveer un determinado producto y se proseguira con la prueba *****************************************************/ List<Object[]> answer = PersistenceFacade.campesinosPorProducto(session, p1, 20); assertTrue("Se esperaba un conjunto con solo un campesino", answer.size() == 1); Campesino c = (Campesino) answer.get(0)[0]; float cost = (float) answer.get(0)[1]; assertTrue("Se esperaba otro campesino", c.equals(c2)); assertTrue("Se esperaba un precio de 22000", (float) 22000 == cost); int duracion = (int) answer.get(0)[2]; assertTrue("La duracion del producto debe ser mayor a 0", duracion > 0); tx.rollback(); } @Test public void ningunCampesinoVendeUnDeterminadoProducto() { Transaction tx = session.beginTransaction(); /**************************************************** Almacenar los Productos de la prueba *****************************************************/ Producto p1 = new Producto("Papa Criolla", 60, false); Producto p2 = new Producto("Papa Sabanera", 90, false); session.save(p1); session.save(p2); /**************************************************** Almacenar las Ubicaciones de los campesinos *****************************************************/ Ubicacion u1 = new Ubicacion("Calle 123", "Cajica", "Cundinamarca", "20", "70"); Ubicacion u2 = new Ubicacion("Calle 234", "Chia", "Cundinamarca", "20", "80"); Ubicacion u3 = new Ubicacion("Casa de pobre y sin presencia", "Quibdo", "Choco", "40", "-80"); session.save(u1); session.save(u2); session.save(u3); /**************************************************** Almacenar los campesinos *****************************************************/ Campesino c1 = new Campesino(1, u1, "Guillermo Leon", "Alvarez Salamanca", "1234567"); Campesino c2 = new Campesino(2, u2, "Andres Felipe", "Barrero Chacon", "1234567"); Campesino c3 = new Campesino(3, u3, "Andres Mauricio", "Melo Torres", "1234567"); session.save(c1); session.save(c2); session.save(c3); /**************************************************** Almacenar los productos en venta del campesino 1 *****************************************************/ Set<ProductoEnVenta> s1 = new HashSet<>(); ProductoEnVenta p1c1 = new ProductoEnVenta(c1, p1, "Muy buena calidad de papa criolla", new Date(2015 - 1900, 2, 5), (float) (60.5), 1000); session.save(p1c1); s1.add(p1c1); c1 = (Campesino) session.load(Campesino.class, 1); c1.setProductosEnVentas(s1); session.update(c1); /**************************************************** Almacenar los productos en venta del campesino 2 *****************************************************/ Set<ProductoEnVenta> s2 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c2 = new ProductoEnVenta(c2, p1, "La mejor papa criolla", new Date(2015 - 1900, 8, 8), (float) 150.6, 1100); session.save(p1c2); s2.add(p1c2); c2 = (Campesino) session.load(Campesino.class, 2); c2.setProductosEnVentas(s2); session.update(c2); /**************************************************** Almacenar los productos en venta del campesino 3 *****************************************************/ Set<ProductoEnVenta> s3 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c3 = new ProductoEnVenta(c3, p1, "La papa criolla de Zlatan", new Date(2015 - 1900, 8, 8), (float) 300.50, 2500); session.save(p1c3); s3.add(p1c3); c3 = (Campesino) session.load(Campesino.class, 3); c3.setProductosEnVentas(s3); session.update(c3); /**************************************************** Se realizara la consulta de los campesinos que pueden proveer un determinado producto y se proseguira con la prueba *****************************************************/ List<Object[]> answer = PersistenceFacade.campesinosPorProducto(session, p2, 20); assertTrue("Se esperaba un conjunto vacio", answer.size() == 0); tx.rollback(); } @Test public void ningunCampesinoTieneElProductoEnBuenEstado() { Transaction tx = session.beginTransaction(); /**************************************************** Almacenar los Productos de la prueba *****************************************************/ Producto p1 = new Producto("Papa Criolla", 60, false); session.save(p1); /**************************************************** Almacenar las Ubicaciones de los campesinos *****************************************************/ Ubicacion u1 = new Ubicacion("Calle 123", "Cajica", "Cundinamarca", "20", "70"); Ubicacion u2 = new Ubicacion("Calle 234", "Chia", "Cundinamarca", "20", "80"); Ubicacion u3 = new Ubicacion("Casa de pobre y sin presencia", "Quibdo", "Choco", "40", "-80"); session.save(u1); session.save(u2); session.save(u3); /**************************************************** Almacenar los campesinos *****************************************************/ Campesino c1 = new Campesino(1, u1, "Guillermo Leon", "Alvarez Salamanca", "1234567"); Campesino c2 = new Campesino(2, u2, "Andres Felipe", "Barrero Chacon", "1234567"); Campesino c3 = new Campesino(3, u3, "Andres Mauricio", "Melo Torres", "1234567"); session.save(c1); session.save(c2); session.save(c3); /**************************************************** Almacenar los productos en venta del campesino 1 *****************************************************/ Set<ProductoEnVenta> s1 = new HashSet<>(); ProductoEnVenta p1c1 = new ProductoEnVenta(c1, p1, "Muy buena calidad de papa criolla", new Date(2015 - 1900, 1, 12), (float) (60.5), 1000); session.save(p1c1); s1.add(p1c1); c1 = (Campesino) session.load(Campesino.class, 1); c1.setProductosEnVentas(s1); session.update(c1); /**************************************************** Almacenar los productos en venta del campesino 2 *****************************************************/ Set<ProductoEnVenta> s2 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c2 = new ProductoEnVenta(c2, p1, "La mejor papa criolla", new Date(2015 - 1900, 3, 8), (float) 150.6, 1100); session.save(p1c2); s2.add(p1c2); c2 = (Campesino) session.load(Campesino.class, 2); c2.setProductosEnVentas(s2); session.update(c2); /**************************************************** Almacenar los productos en venta del campesino 3 *****************************************************/ Set<ProductoEnVenta> s3 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c3 = new ProductoEnVenta(c3, p1, "La papa criolla de Zlatan", new Date(2015 - 1900, 4, 20), (float) 300.50, 2500); session.save(p1c3); s3.add(p1c3); c3 = (Campesino) session.load(Campesino.class, 3); c3.setProductosEnVentas(s3); session.update(c3); /**************************************************** Se realizara la consulta de los campesinos que pueden proveer un determinado producto y se proseguira con la prueba *****************************************************/ List<Object[]> answer = PersistenceFacade.campesinosPorProducto(session, p1, 10); assertTrue("Se esperaba un conjunto vacio", answer.size() == 0); tx.rollback(); } @Test public void ningunCampesinoTieneLaCantidadDeProductoNecesaria() { Transaction tx = session.beginTransaction(); /**************************************************** Almacenar los Productos de la prueba *****************************************************/ Producto p1 = new Producto("Papa Criolla", 60, false); session.save(p1); /**************************************************** Almacenar las Ubicaciones de los campesinos *****************************************************/ Ubicacion u1 = new Ubicacion("Calle 123", "Cajica", "Cundinamarca", "20", "70"); Ubicacion u2 = new Ubicacion("Calle 234", "Chia", "Cundinamarca", "20", "80"); Ubicacion u3 = new Ubicacion("Casa de pobre y sin presencia", "Quibdo", "Choco", "40", "-80"); session.save(u1); session.save(u2); session.save(u3); /**************************************************** Almacenar los campesinos *****************************************************/ Campesino c1 = new Campesino(1, u1, "Guillermo Leon", "Alvarez Salamanca", "1234567"); Campesino c2 = new Campesino(2, u2, "Andres Felipe", "Barrero Chacon", "1234567"); Campesino c3 = new Campesino(3, u3, "Andres Mauricio", "Melo Torres", "1234567"); session.save(c1); session.save(c2); session.save(c3); /**************************************************** Almacenar los productos en venta del campesino 1 *****************************************************/ Set<ProductoEnVenta> s1 = new HashSet<>(); ProductoEnVenta p1c1 = new ProductoEnVenta(c1, p1, "Muy buena calidad de papa criolla", new Date(2015 - 1900, 1, 12), (float) (60.5), 1000); session.save(p1c1); s1.add(p1c1); c1 = (Campesino) session.load(Campesino.class, 1); c1.setProductosEnVentas(s1); session.update(c1); /**************************************************** Almacenar los productos en venta del campesino 2 *****************************************************/ Set<ProductoEnVenta> s2 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c2 = new ProductoEnVenta(c2, p1, "La mejor papa criolla", new Date(2015 - 1900, 3, 8), (float) 150.6, 1100); session.save(p1c2); s2.add(p1c2); c2 = (Campesino) session.load(Campesino.class, 2); c2.setProductosEnVentas(s2); session.update(c2); /**************************************************** Almacenar los productos en venta del campesino 3 *****************************************************/ Set<ProductoEnVenta> s3 = new HashSet<ProductoEnVenta>(); ProductoEnVenta p1c3 = new ProductoEnVenta(c3, p1, "La papa criolla de Zlatan", new Date(2015 - 1900, 4, 20), (float) 300.50, 2500); session.save(p1c3); s3.add(p1c3); c3 = (Campesino) session.load(Campesino.class, 3); c3.setProductosEnVentas(s3); session.update(c3); /**************************************************** Se realizara la consulta de los campesinos que pueden proveer un determinado producto y se proseguira con la prueba *****************************************************/ List<Object[]> answer = PersistenceFacade.campesinosPorProducto(session, p1, 1000); assertTrue("Se esperaba un conjunto vacio", answer.size() == 0); tx.rollback(); } }