/*
* Copyright 2010-2013 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package org.killbill.billing.jaxrs.json;
import java.util.UUID;
import org.joda.time.DateTimeZone;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.killbill.billing.account.api.Account;
import org.killbill.billing.catalog.api.Currency;
import org.killbill.billing.jaxrs.JaxrsTestSuiteNoDB;
import org.killbill.billing.mock.MockAccountBuilder;
public class TestAccountJson extends JaxrsTestSuiteNoDB {
@Test(groups = "fast")
public void testJson() throws Exception {
final String accountId = UUID.randomUUID().toString();
final String name = UUID.randomUUID().toString();
final Integer length = 12;
final String externalKey = UUID.randomUUID().toString();
final String email = UUID.randomUUID().toString();
final Integer billCycleDayLocal = 6;
final String currency = UUID.randomUUID().toString();
final String paymentMethodId = UUID.randomUUID().toString();
final String timeZone = UUID.randomUUID().toString();
final String address1 = UUID.randomUUID().toString();
final String address2 = UUID.randomUUID().toString();
final String postalCode = UUID.randomUUID().toString();
final String company = UUID.randomUUID().toString();
final String city = UUID.randomUUID().toString();
final String state = UUID.randomUUID().toString();
final String country = UUID.randomUUID().toString();
final String locale = UUID.randomUUID().toString();
final String phone = UUID.randomUUID().toString();
final String notes = UUID.randomUUID().toString();
final Boolean isMigrated = true;
final Boolean isNotifiedForInvoice = false;
final String parentAccountId = UUID.randomUUID().toString();
final AccountJson accountJson = new AccountJson(accountId, name, length, externalKey,
email, billCycleDayLocal, currency, parentAccountId, true, paymentMethodId,
timeZone, address1, address2, postalCode, company, city, state,
country, locale, phone, notes, isMigrated, isNotifiedForInvoice, null, null, null);
Assert.assertEquals(accountJson.getAccountId(), accountId);
Assert.assertEquals(accountJson.getName(), name);
Assert.assertEquals(accountJson.getFirstNameLength(), length);
Assert.assertEquals(accountJson.getExternalKey(), externalKey);
Assert.assertEquals(accountJson.getEmail(), email);
Assert.assertEquals(accountJson.getBillCycleDayLocal(), billCycleDayLocal);
Assert.assertEquals(accountJson.getCurrency(), currency);
Assert.assertEquals(accountJson.getPaymentMethodId(), paymentMethodId);
Assert.assertEquals(accountJson.getTimeZone(), timeZone);
Assert.assertEquals(accountJson.getAddress1(), address1);
Assert.assertEquals(accountJson.getAddress2(), address2);
Assert.assertEquals(accountJson.getPostalCode(), postalCode);
Assert.assertEquals(accountJson.getCompany(), company);
Assert.assertEquals(accountJson.getCity(), city);
Assert.assertEquals(accountJson.getState(), state);
Assert.assertEquals(accountJson.getCountry(), country);
Assert.assertEquals(accountJson.getLocale(), locale);
Assert.assertEquals(accountJson.getPhone(), phone);
Assert.assertEquals(accountJson.getNotes(), notes);
Assert.assertEquals(accountJson.isMigrated(), isMigrated);
Assert.assertEquals(accountJson.isNotifiedForInvoices(), isNotifiedForInvoice);
Assert.assertEquals(accountJson.getParentAccountId(), parentAccountId);
Assert.assertEquals(accountJson.isPaymentDelegatedToParent(), Boolean.TRUE);
final String asJson = mapper.writeValueAsString(accountJson);
final AccountJson fromJson = mapper.readValue(asJson, AccountJson.class);
Assert.assertEquals(fromJson, accountJson);
}
@Test(groups = "fast")
public void testFromAccount() throws Exception {
final MockAccountBuilder accountBuilder = new MockAccountBuilder();
accountBuilder.address1(UUID.randomUUID().toString());
accountBuilder.address2(UUID.randomUUID().toString());
final int bcd = 4;
accountBuilder.billingCycleDayLocal(bcd);
accountBuilder.city(UUID.randomUUID().toString());
accountBuilder.companyName(UUID.randomUUID().toString());
accountBuilder.country(UUID.randomUUID().toString());
accountBuilder.currency(Currency.GBP);
accountBuilder.email(UUID.randomUUID().toString());
accountBuilder.externalKey(UUID.randomUUID().toString());
accountBuilder.firstNameLength(12);
accountBuilder.isNotifiedForInvoices(true);
accountBuilder.locale(UUID.randomUUID().toString());
accountBuilder.migrated(true);
accountBuilder.name(UUID.randomUUID().toString());
accountBuilder.paymentMethodId(UUID.randomUUID());
accountBuilder.phone(UUID.randomUUID().toString());
accountBuilder.postalCode(UUID.randomUUID().toString());
accountBuilder.stateOrProvince(UUID.randomUUID().toString());
accountBuilder.timeZone(DateTimeZone.UTC);
accountBuilder.parentAccountId(UUID.randomUUID());
final Account account = accountBuilder.build();
final AccountJson accountJson = new AccountJson(account, null, null, null);
Assert.assertEquals(accountJson.getAddress1(), account.getAddress1());
Assert.assertEquals(accountJson.getAddress2(), account.getAddress2());
Assert.assertEquals(accountJson.getBillCycleDayLocal(), (Integer) bcd);
Assert.assertEquals(accountJson.getCountry(), account.getCountry());
Assert.assertEquals(accountJson.getLocale(), account.getLocale());
Assert.assertEquals(accountJson.getCompany(), account.getCompanyName());
Assert.assertEquals(accountJson.getCity(), account.getCity());
Assert.assertEquals(accountJson.getCurrency(), account.getCurrency().toString());
Assert.assertEquals(accountJson.getEmail(), account.getEmail());
Assert.assertEquals(accountJson.getExternalKey(), account.getExternalKey());
Assert.assertEquals(accountJson.getName(), account.getName());
Assert.assertEquals(accountJson.getPaymentMethodId(), account.getPaymentMethodId().toString());
Assert.assertEquals(accountJson.getPhone(), account.getPhone());
Assert.assertEquals(accountJson.isMigrated(), account.isMigrated());
Assert.assertEquals(accountJson.isNotifiedForInvoices(), account.isNotifiedForInvoices());
Assert.assertEquals(accountJson.getState(), account.getStateOrProvince());
Assert.assertEquals(accountJson.getTimeZone(), account.getTimeZone().toString());
Assert.assertEquals(accountJson.getParentAccountId(), account.getParentAccountId().toString());
}
}