예제 #1
0
  @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());
    }
  }
예제 #2
0
 @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());
   }
 }
예제 #3
0
  @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);
  }
예제 #4
0
  @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());
  }
예제 #5
0
  @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());
    }
  }
예제 #6
0
  @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());
    }
  }
예제 #7
0
  @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());
    }
  }
예제 #8
0
  @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());
      }
    }
  }
예제 #9
0
  @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());
    }
  }
예제 #10
0
  // 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());
    }
  }
예제 #11
0
  @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());
    }
  }
예제 #12
0
  @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());
  }
예제 #13
0
  // 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());
    }
  }
예제 #14
0
  @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());
    }
  }
예제 #15
0
  @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());
    }
  }
예제 #16
0
  @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());
      }
    }
  }
예제 #17
0
  @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());
  }