@TimedResource @PUT @Path("/{invoiceId:" + UUID_PATTERN + "}/" + VOID_INVOICE) @Consumes(APPLICATION_JSON) @Produces(APPLICATION_JSON) @ApiOperation(value = "Perform the action of voiding an invoice") @ApiResponses(value = {@ApiResponse(code = 204, message = "Successful operation"), @ApiResponse(code = 400, message = "Invalid invoice id supplied"), @ApiResponse(code = 404, message = "Invoice not found")}) public Response voidInvoice(@PathParam("invoiceId") final UUID invoiceId, @HeaderParam(HDR_CREATED_BY) final String createdBy, @HeaderParam(HDR_REASON) final String reason, @HeaderParam(HDR_COMMENT) final String comment, @javax.ws.rs.core.Context final HttpServletRequest request, @javax.ws.rs.core.Context final UriInfo uriInfo) throws InvoiceApiException { final CallContext callContext = context.createCallContextNoAccountId(createdBy, reason, comment, request); invoiceApi.voidInvoice(invoiceId, callContext); return Response.status(Status.NO_CONTENT).build(); }
@Test(groups = "slow") public void testVoidInvoice() throws Exception { // try to void invoice invoiceUserApi.voidInvoice(invoiceId, callContext); final Invoice invoice = invoiceUserApi.getInvoice(invoiceId, callContext); Assert.assertEquals(invoice.getStatus(), InvoiceStatus.VOID); }
@Test(groups = "slow") public void testVoidInvoiceThatIsPaid() throws Exception { InternalCallContext context = internalCallContextFactory.createInternalCallContext(accountId, callContext); // Verify the initial invoice balance final BigDecimal invoiceBalance = invoiceUserApi.getInvoice(invoiceId, callContext).getBalance(); Assert.assertEquals(invoiceBalance.compareTo(BigDecimal.ZERO), 1); // Verify the initial account balance final BigDecimal accountBalance = invoiceUserApi.getAccountBalance(accountId, callContext); Assert.assertEquals(accountBalance, invoiceBalance); // create payment final InvoicePayment payment = new DefaultInvoicePayment(InvoicePaymentType.ATTEMPT, UUID.randomUUID(), invoiceId, new DateTime(), invoiceBalance, Currency.USD, Currency.USD, null, true); invoiceUtil.createPayment(payment, context); // try to void invoice, it should fail try { invoiceUserApi.voidInvoice(invoiceId, callContext); Assert.fail("Should fail to void invoice that is already paid"); } catch (final InvoiceApiException e) { Assert.assertEquals(e.getCode(), ErrorCode.CAN_NOT_VOID_INVOICE_THAT_IS_PAID.getCode()); } } }
invoiceUserApi.voidInvoice(invoices.get(1).getId(), callContext); invoiceUserApi.voidInvoice(invoices.get(2).getId(), callContext); Assert.fail("Should fail to void invoice that is already paid"); } catch (final InvoiceApiException e) {
invoiceUserApi.voidInvoice(firstInvoice.getId(), callContext); assertListenerStatus(); invoiceChecker.checkTrackingIds(firstInvoice, ImmutableSet.of(), internalCallContext);