/**
   * Update Push Application
   *
   * @param pushApplicationID id of {@link PushApplication}
   * @param updatedPushApp new info of {@link PushApplication}
   * @statuscode 204 The PushApplication updated successfully
   * @statuscode 400 The format of the client request was incorrect
   * @statuscode 404 The requested PushApplication resource does not exist
   */
  @PUT
  @Path("/{pushAppID}")
  @Consumes(MediaType.APPLICATION_JSON)
  @Produces(MediaType.APPLICATION_JSON)
  @ReturnType("java.lang.Void")
  public Response updatePushApplication(
      @PathParam("pushAppID") String pushApplicationID, PushApplication updatedPushApp) {

    PushApplication pushApp = getSearch().findByPushApplicationIDForDeveloper(pushApplicationID);

    if (pushApp != null) {

      // some validation
      try {
        validateModelClass(updatedPushApp);
      } catch (ConstraintViolationException cve) {

        // Build and return the 400 (Bad Request) response
        ResponseBuilder builder = createBadRequestResponse(cve.getConstraintViolations());

        return builder.build();
      }

      // update name/desc:
      pushApp.setDescription(updatedPushApp.getDescription());
      pushApp.setName(updatedPushApp.getName());
      pushAppService.updatePushApplication(pushApp);

      return Response.noContent().build();
    }

    return Response.status(Status.NOT_FOUND)
        .entity("Could not find requested PushApplicationEntity")
        .build();
  }
  @Test
  public void updatePushApplication() {
    final String pushApplicationID1 = "888";

    final PushApplication pushApplication1 =
        pushApplicationDao.findByPushApplicationID(pushApplicationID1);
    assertThat(pushApplication1).isNotNull();
    assertThat(pushApplication1.getName()).isEqualTo("Push App 1");

    pushApplication1.setName("Cool Push App 1");
    pushApplicationDao.update(pushApplication1);

    assertThat(pushApplicationDao.findByPushApplicationID(pushApplicationID1)).isNotNull();
    assertThat(pushApplicationDao.findByPushApplicationID(pushApplicationID1).getName())
        .isEqualTo("Cool Push App 1");
  }
  @Test
  public void shouldFindPushApplicationNameAndIDBasedOnVariantID() {

    // when
    final List<PushApplication> applications =
        pushApplicationDao.findByVariantIds(Arrays.asList("1"));

    // then
    assertThat(applications).isNotEmpty();
    assertThat(applications.size()).isEqualTo(1);

    final PushApplication application = applications.iterator().next();
    assertThat(application.getName()).isEqualTo("Push App 1");
    assertThat(application.getVariants()).isNotEmpty();
    assertThat(application.getVariants().size()).isEqualTo(1);
    assertThat(application.getVariants().iterator().next().getId()).isEqualTo("1");
  }
  @Test
  public void primaryKeyUnmodifiedAfterUpdate() {
    final String id = "1";
    PushApplication pa = pushApplicationDao.find(id);

    assertThat(pa.getId()).isEqualTo(id);

    final PushApplication pushApplication1 =
        pushApplicationDao.findByPushApplicationID(pa.getPushApplicationID());
    pushApplication1.setName("Cool Push App 1");
    pushApplicationDao.update(pushApplication1);

    entityManager.flush();
    entityManager.clear();

    pa = pushApplicationDao.find(id);

    assertThat(pa.getName()).isEqualTo("Cool Push App 1");
  }