killbill-aplcache

server: update Credit tests to latest CreditJson Tests now

6/8/2012 9:58:14 PM

Details

diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
index 75ecde0..a63a244 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
@@ -100,7 +100,8 @@ public class CreditJson {
 
         final CreditJson that = (CreditJson) o;
 
-        if (creditAmount != null ? !creditAmount.equals(that.creditAmount) : that.creditAmount != null) {
+        if (!((creditAmount == null && that.creditAmount == null) ||
+                (creditAmount != null && that.creditAmount != null && creditAmount.compareTo(that.creditAmount) == 0))) {
             return false;
         }
         if (!((effectiveDate == null && that.effectiveDate == null) ||
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
index 6ebf02c..74ea6a3 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
@@ -67,9 +67,12 @@ public class CreditResource implements JaxrsResource {
     public Response getCredit(@PathParam("creditId") final String creditId) {
         try {
             final InvoiceItem credit = invoiceUserApi.getCreditById(UUID.fromString(creditId));
-            final CreditJson creditJson = new CreditJson(credit);
-
-            return Response.status(Response.Status.OK).entity(creditJson).build();
+            if (credit == null) {
+                return Response.status(Response.Status.NOT_FOUND).build();
+            } else {
+                final CreditJson creditJson = new CreditJson(credit);
+                return Response.status(Response.Status.OK).entity(creditJson).build();
+            }
         } catch (InvoiceApiException e) {
             final String error = String.format("Failed to locate credit for id %s", creditId);
             log.info(error, e);
@@ -81,12 +84,16 @@ public class CreditResource implements JaxrsResource {
     @Consumes(APPLICATION_JSON)
     @Produces(APPLICATION_JSON)
     public Response createCredit(final CreditJson json,
-                                 @PathParam("accountId") final String accountId,
                                  @HeaderParam(HDR_CREATED_BY) final String createdBy,
                                  @HeaderParam(HDR_REASON) final String reason,
                                  @HeaderParam(HDR_COMMENT) final String comment) {
+        final UUID accountId = json.getAccountId();
+        if (accountId == null) {
+            return Response.status(Response.Status.BAD_REQUEST).entity("AccountId cannot be null").build();
+        }
+
         try {
-            final Account account = accountUserApi.getAccountById(UUID.fromString(accountId));
+            final Account account = accountUserApi.getAccountById(accountId);
 
             final InvoiceItem credit = invoiceUserApi.insertCredit(account.getId(), json.getCreditAmount(), json.getEffectiveDate(),
                                                                    account.getCurrency(), context.createContext(createdBy, reason, comment));
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java b/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java
index 4abee9d..0129225 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java
@@ -27,12 +27,12 @@ import org.testng.annotations.Test;
 import com.ning.billing.jaxrs.json.AccountJson;
 import com.ning.billing.jaxrs.json.CreditJson;
 import com.ning.billing.jaxrs.resources.JaxrsResource;
+import com.ning.billing.util.clock.DefaultClock;
 import com.ning.http.client.Response;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
-@Test(groups = "slow", enabled = false)
 public class TestCredit extends TestJaxrsBase {
     AccountJson accountJson;
 
@@ -44,9 +44,11 @@ public class TestCredit extends TestJaxrsBase {
 
     @Test(groups = "slow")
     public void testAddCreditToInvoice() throws Exception {
+        final DateTime requestedDate = DefaultClock.truncateMs(new DateTime(DateTimeZone.UTC));
+        final DateTime effectiveDate = DefaultClock.truncateMs(new DateTime(DateTimeZone.UTC));
         final CreditJson input = new CreditJson(BigDecimal.TEN, UUID.randomUUID(), UUID.randomUUID().toString(),
-                                                new DateTime(DateTimeZone.UTC), new DateTime(DateTimeZone.UTC),
-                                                UUID.randomUUID().toString());
+                                                requestedDate, effectiveDate,
+                                                UUID.randomUUID().toString(), UUID.fromString(accountJson.getAccountId()));
         final String jsonInput = mapper.writeValueAsString(input);
 
         // Create the credit
@@ -60,16 +62,18 @@ public class TestCredit extends TestJaxrsBase {
         response = doGetWithUrl(location, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
         assertEquals(response.getStatusCode(), javax.ws.rs.core.Response.Status.OK.getStatusCode());
 
+        // We can't just compare the object via .equals() due e.g. to the invoice id
         final CreditJson objFromJson = mapper.readValue(response.getResponseBody(), CreditJson.class);
-        assertNotNull(objFromJson);
-        assertEquals(objFromJson, input);
+        assertEquals(objFromJson.getAccountId(), input.getAccountId());
+        assertEquals(objFromJson.getCreditAmount().compareTo(input.getCreditAmount()), 0);
+        assertEquals(objFromJson.getEffectiveDate().compareTo(input.getEffectiveDate()), 0);
     }
 
     @Test(groups = "slow")
     public void testAccountDoesNotExist() throws Exception {
         final CreditJson input = new CreditJson(BigDecimal.TEN, UUID.randomUUID(), UUID.randomUUID().toString(),
                                                 new DateTime(DateTimeZone.UTC), new DateTime(DateTimeZone.UTC),
-                                                UUID.randomUUID().toString());
+                                                UUID.randomUUID().toString(), UUID.randomUUID());
         final String jsonInput = mapper.writeValueAsString(input);
 
         // Try to create the credit
@@ -79,7 +83,7 @@ public class TestCredit extends TestJaxrsBase {
 
     @Test(groups = "slow")
     public void testBadRequest() throws Exception {
-        final CreditJson input = new CreditJson(null, null, null, null, null, null);
+        final CreditJson input = new CreditJson(null, null, null, null, null, null, null);
         final String jsonInput = mapper.writeValueAsString(input);
 
         // Try to create the credit