@Test public void testReservarOfertaAndFindReserva() throws InstanceNotFoundException, InputValidationException, OfertaEstadoException, OfertaMaxPersonasException, OfertaEmailException, OfertaReservaDateException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); try { /* Reservar oferta. */ Reserva reserva = ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), USER_EMAIL, VALID_CREDIT_CARD_NUMBER)); /* Find reserva. */ Reserva foundReserva = ofertaService.findReserva(reserva.getReservaId()); /* Check reserva. */ assertEquals(reserva, foundReserva); assertEquals(VALID_CREDIT_CARD_NUMBER, foundReserva.getNumeroTarjeta()); assertEquals(USER_EMAIL, foundReserva.getEmailUsuario()); assertEquals(oferta.getOfertaId(), foundReserva.getOfertaId()); assertTrue(Calendar.getInstance().after(foundReserva.getFechaReserva())); /* Clear database */ // Reclamamos la oferta para cambiar su estado y poder eliminarla (Solo se pueden borrar // ofertas 'Creadas' o 'Liberadas' ofertaService.reclamarOferta(reserva.getReservaId()); removeReserva(reserva.getReservaId()); } finally { removeOferta(oferta.getOfertaId()); } }
@Test(expected = OfertaMaxPersonasException.class) public void testMaxPersonasException() throws InstanceNotFoundException, InputValidationException, OfertaMaxPersonasException, OfertaEmailException, OfertaReservaDateException, OfertaEstadoException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); try { ofertaService.reservarOferta(oferta.getOfertaId(), USER_EMAIL, VALID_CREDIT_CARD_NUMBER); ofertaService.reservarOferta( oferta.getOfertaId(), "a" + USER_EMAIL, VALID_CREDIT_CARD_NUMBER); ofertaService.reservarOferta( oferta.getOfertaId(), "b" + USER_EMAIL, VALID_CREDIT_CARD_NUMBER); ofertaService.reservarOferta( oferta.getOfertaId(), "c" + USER_EMAIL, VALID_CREDIT_CARD_NUMBER); ofertaService.reservarOferta( oferta.getOfertaId(), "d" + USER_EMAIL, VALID_CREDIT_CARD_NUMBER); ofertaService.reservarOferta( oferta.getOfertaId(), "e" + USER_EMAIL, VALID_CREDIT_CARD_NUMBER); } finally { /* Clear database. */ for (Reserva reserva : ofertaService.findReservas(oferta.getOfertaId(), null)) { ofertaService.reclamarOferta(reserva.getReservaId()); removeReserva(reserva.getReservaId()); } removeOferta(oferta.getOfertaId()); } }
@Test public void testRemoveOferta() throws InstanceNotFoundException, InputValidationException, OfertaEstadoException { Oferta oferta = createOferta(getValidOferta()); boolean exceptionCatched = false; try { ofertaService.removeOferta(oferta.getOfertaId()); ofertaService.findOferta(oferta.getOfertaId()); } catch (InstanceNotFoundException e) { exceptionCatched = true; } assertTrue(exceptionCatched); }
@Test public void testAddOfertaAndFindOferta() throws InputValidationException, InstanceNotFoundException, OfertaEstadoException { Oferta oferta = getValidOferta(); Oferta addedOferta = null; addedOferta = ofertaService.addOferta(oferta); Oferta foundOferta = ofertaService.findOferta(addedOferta.getOfertaId()); assertEquals(addedOferta, foundOferta); // Clear Database removeOferta(addedOferta.getOfertaId()); }
@Test(expected = InputValidationException.class) public void testReservarOfertaWithInvalidCreditCard() throws InputValidationException, InstanceNotFoundException, OfertaEstadoException, OfertaMaxPersonasException, OfertaEmailException, OfertaReservaDateException { Oferta oferta = createOferta(getValidOferta()); try { Reserva reserva = ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), USER_EMAIL, INVALID_CREDIT_CARD_NUMBER)); /* Clear database. */ removeReserva(reserva.getReservaId()); } finally { removeOferta(oferta.getOfertaId()); } }
@Test public void testReservar_y_Reclamar() throws InstanceNotFoundException, InputValidationException, OfertaEstadoException, OfertaMaxPersonasException, OfertaEmailException, OfertaReservaDateException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); try { Reserva reserva = ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), USER_EMAIL, VALID_CREDIT_CARD_NUMBER)); assertTrue(ofertaService.reclamarOferta(reserva.getReservaId())); assertFalse(ofertaService.reclamarOferta(reserva.getReservaId())); /* Clear database. */ removeReserva(reserva.getReservaId()); } finally { removeOferta(oferta.getOfertaId()); } }
@Test public void testReservarOfertasAndFindReservas() throws InstanceNotFoundException, InputValidationException, OfertaEstadoException, OfertaMaxPersonasException, OfertaEmailException, OfertaReservaDateException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); List<Reserva> reservas = new ArrayList<Reserva>(); List<Reserva> _reservas = new ArrayList<Reserva>(); try { reservas.add( 0, ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), USER_EMAIL, VALID_CREDIT_CARD_NUMBER))); reservas.add( 1, ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), "1" + USER_EMAIL, VALID_CREDIT_CARD_NUMBER))); _reservas = ofertaService.findReservas(oferta.getOfertaId(), null); assertEquals(reservas.size(), _reservas.size()); assertEquals(reservas, _reservas); /* Añadir y buscar reserva en estado cerrada */ reservas.add( 2, ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), "2" + USER_EMAIL, VALID_CREDIT_CARD_NUMBER))); ofertaService.reclamarOferta(reservas.get(2).getReservaId()); _reservas = ofertaService.findReservas(oferta.getOfertaId(), Reserva.ESTADO_CERRADA); assertEquals(1, _reservas.size()); for (Reserva reserva : ofertaService.findReservas(oferta.getOfertaId(), null)) { ofertaService.reclamarOferta(reserva.getReservaId()); removeReserva(reserva.getReservaId()); } } finally { removeOferta(oferta.getOfertaId()); } }
@Test public void testFindOfertas() throws InputValidationException, OfertaEstadoException { // Add ofertas List<Oferta> ofertas = new LinkedList<Oferta>(); Oferta oferta1 = createOferta(getValidOferta("oferta patata 1")); ofertas.add(oferta1); Oferta oferta2 = createOferta(getValidOferta("oferta patata 2")); ofertas.add(oferta2); Oferta oferta3 = getValidOferta("oferta patata 3"); oferta3.setDescripcion("prueba de fuego"); oferta3.setEstado(Oferta.ESTADO_LIBERADA); Calendar date = Calendar.getInstance(); date.set(1990, 11, 1); oferta3.setIniReserva(date); oferta3 = ofertaService.addOferta(oferta3); ofertas.add(oferta3); try { List<Oferta> foundOfertas = ofertaService.findOfertas("patAta", null, null); assertEquals(3, foundOfertas.size()); assertEquals(ofertas, foundOfertas); foundOfertas = ofertaService.findOfertas(); assertEquals(3, foundOfertas.size()); assertEquals(ofertas, foundOfertas); foundOfertas = ofertaService.findOfertas("patAta 2", null, null); assertEquals(1, foundOfertas.size()); assertEquals(ofertas.get(1), foundOfertas.get(0)); foundOfertas = ofertaService.findOfertas("patata 5", null, null); assertEquals(0, foundOfertas.size()); foundOfertas = ofertaService.findOfertas("fuEgo", null, null); assertEquals(1, foundOfertas.size()); assertEquals(ofertas.get(2), foundOfertas.get(0)); Calendar date1 = Calendar.getInstance(); date1.set(1990, 11, 7); foundOfertas = ofertaService.findOfertas(null, null, date1); assertEquals(1, foundOfertas.size()); assertEquals(ofertas.get(2), foundOfertas.get(0)); date1.set(1990, 10, 7); foundOfertas = ofertaService.findOfertas(null, null, date1); assertEquals(0, foundOfertas.size()); foundOfertas = ofertaService.findOfertas("fuego", Oferta.ESTADO_LIBERADA, null); assertEquals(1, foundOfertas.size()); } finally { // Clear Database for (Oferta oferta : ofertas) { removeOferta(oferta.getOfertaId()); } } }
@Test(expected = OfertaReservaDateException.class) public void testReservaDateException() throws InstanceNotFoundException, InputValidationException, OfertaEmailException, OfertaMaxPersonasException, OfertaReservaDateException, OfertaEstadoException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); Oferta oferta2 = null; try { // Calendar before = Calendar.getInstance(); before.add(Calendar.DAY_OF_MONTH, 2); oferta.setIniReserva(before); // Estos dos Calendar para que tenga coherencia y no salten excepciones al añadir la oferta Calendar after = Calendar.getInstance(); after.add(Calendar.DAY_OF_MONTH, 3); oferta.setLimReserva(after); Calendar lim = Calendar.getInstance(); lim.add(Calendar.DAY_OF_MONTH, 4); oferta.setLimOferta(lim); oferta2 = ofertaService.addOferta(oferta); ofertaService.reservarOferta(oferta2.getOfertaId(), USER_EMAIL, VALID_CREDIT_CARD_NUMBER); // Vamos a limpiar la segunda oferta en el siguiente metodo donde solo se reclama /* Clear database. */ } finally { removeOferta(oferta.getOfertaId()); removeOferta(oferta2.getOfertaId()); } }
// Test comentado porque no podemos cambiar las fechas de una oferta reservada para que se reclame // y tampoco antes de reservarse porque iniReserva <= limReserva <= limOferta // En resumen para comprobarlo habria que esperar a que en la oferta caducara su limite para // disfrutarla // @Test(expected = OfertaReclamaDateException.class) public void testReclamaDateException() throws InstanceNotFoundException, InputValidationException, OfertaEmailException, OfertaMaxPersonasException, OfertaReservaDateException, OfertaEstadoException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); Reserva reserva = null; try { reserva = ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), USER_EMAIL, VALID_CREDIT_CARD_NUMBER)); Calendar before = Calendar.getInstance(); before.add(Calendar.DAY_OF_MONTH, -4); oferta.setIniReserva(before); Calendar after = Calendar.getInstance(); after.add(Calendar.DAY_OF_MONTH, -3); oferta.setLimReserva(after); Calendar lim = Calendar.getInstance(); lim.add(Calendar.DAY_OF_MONTH, -2); oferta.setLimOferta(lim); ofertaService.updateOferta( oferta.getOfertaId(), oferta.getTitulo(), oferta.getDescripcion(), oferta.getIniReserva(), oferta.getLimReserva(), oferta.getLimOferta(), oferta.getPrecioReal(), oferta.getPrecioRebajado(), oferta.getMaxPersonas()); ofertaService.reclamarOferta(reserva.getReservaId()); removeReserva(reserva.getReservaId()); } finally { /* Clear database. */ removeOferta(oferta.getOfertaId()); } }
@Test(expected = OfertaEstadoException.class) public void testEstadoException() throws InstanceNotFoundException, InputValidationException, OfertaMaxPersonasException, OfertaEmailException, OfertaReservaDateException, OfertaEstadoException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); Reserva reserva = null; try { reserva = ofertaService.findReserva( ofertaService.reservarOferta( oferta.getOfertaId(), USER_EMAIL, VALID_CREDIT_CARD_NUMBER)); oferta.setMaxPersonas((short) 2); ofertaService.updateOferta( oferta.getOfertaId(), oferta.getTitulo(), oferta.getDescripcion(), oferta.getIniReserva(), oferta.getLimReserva(), oferta.getLimOferta(), oferta.getPrecioReal(), oferta.getPrecioRebajado(), oferta.getMaxPersonas()); /* Clear database. */ } finally { ofertaService.reclamarOferta(reserva.getReservaId()); removeReserva(reserva.getReservaId()); removeOferta(oferta.getOfertaId()); } }
@Test public void testAddNullMaxPersonasOferta() throws InputValidationException, InstanceNotFoundException, OfertaEstadoException { Oferta oferta = createOferta(getValidOferta()); oferta.setMaxPersonas( null); // Esta linea es porque no podemos pasar un null al ofertaService.update como // parametro ofertaService.updateOferta( oferta.getOfertaId(), oferta.getTitulo(), oferta.getDescripcion(), oferta.getIniReserva(), oferta.getLimReserva(), oferta.getLimOferta(), oferta.getPrecioReal(), oferta.getPrecioRebajado(), oferta.getMaxPersonas()); Oferta foundOferta = ofertaService.findOferta(oferta.getOfertaId()); assertEquals(oferta, foundOferta); // Clear Database removeOferta(oferta.getOfertaId()); }
// limOferta > limReserva @Test(expected = InputValidationException.class) public void testSetDatesWrong3() throws InstanceNotFoundException, InputValidationException, OfertaEmailException, OfertaMaxPersonasException, OfertaReservaDateException, OfertaEstadoException, OfertaReclamaDateException { Oferta oferta = createOferta(getValidOferta()); try { Calendar before = Calendar.getInstance(); before.add(Calendar.DAY_OF_MONTH, 1); oferta.setIniReserva(before); Calendar after = Calendar.getInstance(); after.add(Calendar.DAY_OF_MONTH, 3); oferta.setLimReserva(after); Calendar lim = Calendar.getInstance(); lim.add(Calendar.DAY_OF_MONTH, 2); oferta.setLimOferta(lim); ofertaService.updateOferta( oferta.getOfertaId(), oferta.getTitulo(), oferta.getDescripcion(), oferta.getIniReserva(), oferta.getLimReserva(), oferta.getLimOferta(), oferta.getPrecioReal(), oferta.getPrecioRebajado(), oferta.getMaxPersonas()); } finally { /* Clear database. */ removeOferta(oferta.getOfertaId()); } }
@Test public void testUpdateOferta() throws InputValidationException, InstanceNotFoundException, OfertaEstadoException { Oferta oferta = createOferta(getValidOferta()); // Asi es mas legible que poniendo el valor de los parametros directamente en el // ofertaService.updateOferta oferta.setTitulo("new titulo"); oferta.setMaxPersonas((short) 5); oferta.setDescripcion("new description"); oferta.setPrecioReal(20); try { ofertaService.updateOferta( oferta.getOfertaId(), oferta.getTitulo(), oferta.getDescripcion(), oferta.getIniReserva(), oferta.getLimReserva(), oferta.getLimOferta(), oferta.getPrecioReal(), oferta.getPrecioRebajado(), oferta.getMaxPersonas()); Oferta updatedOferta = ofertaService.findOferta(oferta.getOfertaId()); assertEquals(oferta, updatedOferta); // Mas abajo probamos en otro metodo(testEstadoException) otro caso de update reservando una // oferta e intentando actualizarla } finally { // Clear Database removeOferta(oferta.getOfertaId()); } }
@Test(expected = InputValidationException.class) public void testUpdateInvalidOferta() throws InputValidationException, InstanceNotFoundException, OfertaEstadoException { Oferta oferta = createOferta(getValidOferta()); try { // Check oferta titulo not null oferta = ofertaService.findOferta(oferta.getOfertaId()); ofertaService.updateOferta( oferta.getOfertaId(), null, oferta.getDescripcion(), oferta.getIniReserva(), oferta.getLimReserva(), oferta.getLimOferta(), oferta.getPrecioReal(), oferta.getPrecioRebajado(), oferta.getMaxPersonas()); } finally { // Clear Database removeOferta(oferta.getOfertaId()); } }
@Test public void testAddInvalidOferta() throws InputValidationException, OfertaEstadoException { Oferta oferta = getValidOferta(); Oferta addedOferta = null; boolean exceptionCatched = false; try { // Check oferta titulo not null oferta.setTitulo(null); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta titulo not empty exceptionCatched = false; oferta = getValidOferta(); oferta.setTitulo(""); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta descripcion not null exceptionCatched = false; oferta = getValidOferta(); oferta.setDescripcion(null); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta description not null exceptionCatched = false; oferta = getValidOferta(); oferta.setDescripcion(""); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta iniReserva not null exceptionCatched = false; oferta = getValidOferta(); oferta.setIniReserva(null); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta limReserva not null exceptionCatched = false; oferta = getValidOferta(); oferta.setLimReserva(null); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta limOferta not null exceptionCatched = false; oferta = getValidOferta(); oferta.setLimOferta(null); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta precioReal >= 0 exceptionCatched = false; oferta = getValidOferta(); oferta.setPrecioReal((short) -1); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta precioRebajado >= 0 exceptionCatched = false; oferta = getValidOferta(); oferta.setPrecioRebajado((short) -1); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta maxPersonas >= 0 exceptionCatched = false; oferta = getValidOferta(); oferta.setMaxPersonas((short) -1); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta Estados exceptionCatched = false; oferta = getValidOferta(); oferta.setEstado((short) -1); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); // Check oferta Estados <= NUM_ESTADOS exceptionCatched = false; oferta = getValidOferta(); oferta.setEstado((short) (NUM_ESTADOS + 1)); try { addedOferta = ofertaService.addOferta(oferta); } catch (InputValidationException e) { exceptionCatched = true; } assertTrue(exceptionCatched); } finally { if (!exceptionCatched) { // Clear Database removeOferta(addedOferta.getOfertaId()); } } }
@Test(expected = InstanceNotFoundException.class) public void testUpdateNonExistentOferta() throws InputValidationException, InstanceNotFoundException, OfertaEstadoException { Oferta oferta = getValidOferta(); oferta.setOfertaId(NON_EXISTENT_OFERTA_ID); ofertaService.updateOferta( oferta.getOfertaId(), oferta.getTitulo(), oferta.getDescripcion(), oferta.getIniReserva(), oferta.getLimReserva(), oferta.getLimOferta(), oferta.getPrecioReal(), oferta.getPrecioRebajado(), oferta.getMaxPersonas()); }