Search in sources :

Example 1 with AccountTimeline

use of org.killbill.billing.client.model.gen.AccountTimeline in project killbill by killbill.

the class TestAccountTimeline method verifyInvoices.

private void verifyInvoices(final UUID accountId, final DateTime startTime, final DateTime endTime) throws Exception {
    for (final AuditLevel auditLevel : AuditLevel.values()) {
        final AccountTimeline timeline = getAccountTimeline(accountId, auditLevel);
        // Verify invoices
        Assert.assertEquals(timeline.getInvoices().size(), 3);
        // Verify audits
        final List<AuditLog> firstInvoiceAuditLogs = timeline.getInvoices().get(0).getAuditLogs();
        final List<AuditLog> secondInvoiceAuditLogs = timeline.getInvoices().get(1).getAuditLogs();
        final List<AuditLog> thirdInvoiceAuditLogs = timeline.getInvoices().get(2).getAuditLogs();
        if (AuditLevel.NONE.equals(auditLevel)) {
            Assert.assertEquals(firstInvoiceAuditLogs.size(), 0);
            Assert.assertEquals(secondInvoiceAuditLogs.size(), 0);
            Assert.assertEquals(thirdInvoiceAuditLogs.size(), 0);
        } else {
            Assert.assertEquals(firstInvoiceAuditLogs.size(), 1);
            verifyAuditLog(firstInvoiceAuditLogs.get(0), ChangeType.INSERT, null, null, TRANSITION, startTime, endTime);
            Assert.assertEquals(secondInvoiceAuditLogs.size(), 1);
            verifyAuditLog(secondInvoiceAuditLogs.get(0), ChangeType.INSERT, null, null, TRANSITION, startTime, endTime);
            Assert.assertEquals(thirdInvoiceAuditLogs.size(), 1);
            verifyAuditLog(thirdInvoiceAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
        }
    }
}
Also used : AuditLevel(org.killbill.billing.util.api.AuditLevel) AccountTimeline(org.killbill.billing.client.model.gen.AccountTimeline) AuditLog(org.killbill.billing.client.model.gen.AuditLog)

Example 2 with AccountTimeline

use of org.killbill.billing.client.model.gen.AccountTimeline in project killbill by killbill.

the class TestAccountTimeline method getAccountTimeline.

private AccountTimeline getAccountTimeline(final UUID accountId, final AuditLevel auditLevel) throws KillBillClientException {
    final AccountTimeline accountTimeline = accountApi.getAccountTimeline(accountId, false, auditLevel, requestOptions);
    // Verify also the parallel path
    final AccountTimeline accountTimelineInParallel = accountApi.getAccountTimeline(accountId, true, auditLevel, requestOptions);
    Assert.assertEquals(accountTimelineInParallel, accountTimeline);
    return accountTimeline;
}
Also used : AccountTimeline(org.killbill.billing.client.model.gen.AccountTimeline)

Example 3 with AccountTimeline

use of org.killbill.billing.client.model.gen.AccountTimeline in project killbill by killbill.

the class TestAccountTimeline method verifyCredits.

private void verifyCredits(final UUID accountId, final DateTime startTime, final DateTime endTime, final BigDecimal creditAmount) throws Exception {
    for (final AuditLevel auditLevel : AuditLevel.values()) {
        final AccountTimeline timeline = getAccountTimeline(accountId, auditLevel);
        // Verify credits
        final List<InvoiceItem> credits = timeline.getInvoices().get(1).getCredits();
        Assert.assertEquals(credits.size(), 1);
        Assert.assertEquals(credits.get(0).getAmount().compareTo(creditAmount.negate()), 0);
        // Verify audits
        final List<AuditLog> creditAuditLogs = credits.get(0).getAuditLogs();
        if (AuditLevel.NONE.equals(auditLevel)) {
            Assert.assertEquals(creditAuditLogs.size(), 0);
        } else {
            Assert.assertEquals(creditAuditLogs.size(), 1);
            verifyAuditLog(creditAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
        }
    }
}
Also used : InvoiceItem(org.killbill.billing.client.model.gen.InvoiceItem) AuditLevel(org.killbill.billing.util.api.AuditLevel) AccountTimeline(org.killbill.billing.client.model.gen.AccountTimeline) AuditLog(org.killbill.billing.client.model.gen.AuditLog)

Example 4 with AccountTimeline

use of org.killbill.billing.client.model.gen.AccountTimeline in project killbill by killbill.

the class TestAccountTimeline method verifyBundles.

private void verifyBundles(final UUID accountId, final DateTime startTime, final DateTime endTime) throws Exception {
    for (final AuditLevel auditLevel : AuditLevel.values()) {
        final AccountTimeline timeline = getAccountTimeline(accountId, auditLevel);
        // Verify bundles
        Assert.assertEquals(timeline.getBundles().size(), 1);
        Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().size(), 1);
        Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().get(0).getEvents().size(), 3);
        // Verify audits
        final List<AuditLog> bundleAuditLogs = timeline.getBundles().get(0).getAuditLogs();
        final List<AuditLog> subscriptionAuditLogs = timeline.getBundles().get(0).getSubscriptions().get(0).getAuditLogs();
        final List<AuditLog> subscriptionEvent1AuditLogs = timeline.getBundles().get(0).getSubscriptions().get(0).getEvents().get(0).getAuditLogs();
        final List<AuditLog> subscriptionEvent2AuditLogs = timeline.getBundles().get(0).getSubscriptions().get(0).getEvents().get(1).getAuditLogs();
        if (AuditLevel.NONE.equals(auditLevel)) {
            // Audits for bundles
            Assert.assertEquals(bundleAuditLogs.size(), 0);
            // Audits for subscriptions
            Assert.assertEquals(subscriptionAuditLogs.size(), 0);
            // Audit for subscription events
            Assert.assertEquals(subscriptionEvent1AuditLogs.size(), 0);
            Assert.assertEquals(subscriptionEvent2AuditLogs.size(), 0);
        } else if (AuditLevel.MINIMAL.equals(auditLevel)) {
            // Audits for bundles
            Assert.assertEquals(bundleAuditLogs.size(), 1);
            verifyAuditLog(bundleAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            // Audits for subscriptions
            Assert.assertEquals(subscriptionAuditLogs.size(), 1);
            verifyAuditLog(subscriptionAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            // Audit for subscription events
            Assert.assertEquals(subscriptionEvent1AuditLogs.size(), 1);
            verifyAuditLog(subscriptionEvent1AuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            Assert.assertEquals(subscriptionEvent2AuditLogs.size(), 1);
            verifyAuditLog(subscriptionEvent2AuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
        } else {
            // Audits for bundles
            Assert.assertEquals(bundleAuditLogs.size(), 1);
            verifyAuditLog(bundleAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            // Audits for subscriptions
            Assert.assertEquals(subscriptionAuditLogs.size(), 3);
            verifyAuditLog(subscriptionAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            verifyAuditLog(subscriptionAuditLogs.get(1), ChangeType.UPDATE, null, null, TRANSITION, startTime, endTime);
            verifyAuditLog(subscriptionAuditLogs.get(2), ChangeType.UPDATE, null, null, TRANSITION, startTime, endTime);
            // Audit for subscription events
            Assert.assertEquals(subscriptionEvent1AuditLogs.size(), 1);
            verifyAuditLog(subscriptionEvent1AuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            Assert.assertEquals(subscriptionEvent2AuditLogs.size(), 1);
            verifyAuditLog(subscriptionEvent2AuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
        }
    }
}
Also used : AuditLevel(org.killbill.billing.util.api.AuditLevel) AccountTimeline(org.killbill.billing.client.model.gen.AccountTimeline) AuditLog(org.killbill.billing.client.model.gen.AuditLog)

Example 5 with AccountTimeline

use of org.killbill.billing.client.model.gen.AccountTimeline in project killbill by killbill.

the class TestAccountTimeline method verifyPayments.

private void verifyPayments(final UUID accountId, final DateTime startTime, final DateTime endTime, final BigDecimal refundAmount, final BigDecimal chargebackAmount) throws Exception {
    for (final AuditLevel auditLevel : AuditLevel.values()) {
        final AccountTimeline timeline = getAccountTimeline(accountId, auditLevel);
        Assert.assertEquals(timeline.getPayments().size(), 1);
        final InvoicePayment payment = timeline.getPayments().get(0);
        // Verify payments
        final List<PaymentTransaction> purchaseTransactions = getInvoicePaymentTransactions(timeline.getPayments(), TransactionType.PURCHASE);
        Assert.assertEquals(purchaseTransactions.size(), 1);
        final PaymentTransaction purchaseTransaction = purchaseTransactions.get(0);
        // Verify refunds
        final List<PaymentTransaction> refundTransactions = getInvoicePaymentTransactions(timeline.getPayments(), TransactionType.REFUND);
        Assert.assertEquals(refundTransactions.size(), 1);
        final PaymentTransaction refundTransaction = refundTransactions.get(0);
        Assert.assertEquals(refundTransaction.getPaymentId(), payment.getPaymentId());
        Assert.assertEquals(refundTransaction.getAmount().compareTo(refundAmount), 0);
        final List<PaymentTransaction> chargebackTransactions = getInvoicePaymentTransactions(timeline.getPayments(), TransactionType.CHARGEBACK);
        Assert.assertEquals(chargebackTransactions.size(), 1);
        final PaymentTransaction chargebackTransaction = chargebackTransactions.get(0);
        Assert.assertEquals(chargebackTransaction.getPaymentId(), payment.getPaymentId());
        Assert.assertEquals(chargebackTransaction.getAmount().compareTo(chargebackAmount), 0);
        // Verify audits
        final List<AuditLog> paymentAuditLogs = purchaseTransaction.getAuditLogs();
        final List<AuditLog> refundAuditLogs = refundTransaction.getAuditLogs();
        final List<AuditLog> chargebackAuditLogs = chargebackTransaction.getAuditLogs();
        if (AuditLevel.NONE.equals(auditLevel)) {
            // Audits for payments
            Assert.assertEquals(paymentAuditLogs.size(), 0);
            // Audits for refunds
            Assert.assertEquals(refundAuditLogs.size(), 0);
            // Audits for chargebacks
            Assert.assertEquals(chargebackAuditLogs.size(), 0);
        } else if (AuditLevel.MINIMAL.equals(auditLevel)) {
            // Audits for payments
            Assert.assertEquals(paymentAuditLogs.size(), 1);
            verifyAuditLog(paymentAuditLogs.get(0), ChangeType.INSERT, null, null, PAYMENT_REQUEST_PROCESSOR, startTime, endTime);
            // Audits for refunds
            Assert.assertEquals(refundAuditLogs.size(), 1);
            verifyAuditLog(refundAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            // Audits for chargebacks
            Assert.assertEquals(chargebackAuditLogs.size(), 1);
            verifyAuditLog(chargebackAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
        } else {
            // Audits for payments
            Assert.assertEquals(paymentAuditLogs.size(), 2);
            verifyAuditLog(paymentAuditLogs.get(0), ChangeType.INSERT, null, null, PAYMENT_REQUEST_PROCESSOR, startTime, endTime);
            verifyAuditLog(paymentAuditLogs.get(1), ChangeType.UPDATE, null, null, PAYMENT_REQUEST_PROCESSOR, startTime, endTime);
            // Audits for refunds
            Assert.assertEquals(refundAuditLogs.size(), 2);
            verifyAuditLog(refundAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            verifyAuditLog(refundAuditLogs.get(1), ChangeType.UPDATE, reason, comment, createdBy, startTime, endTime);
            // Audits for chargebacks
            Assert.assertEquals(chargebackAuditLogs.size(), 2);
            verifyAuditLog(chargebackAuditLogs.get(0), ChangeType.INSERT, reason, comment, createdBy, startTime, endTime);
            verifyAuditLog(chargebackAuditLogs.get(1), ChangeType.UPDATE, reason, comment, createdBy, startTime, endTime);
        }
    }
}
Also used : InvoicePaymentTransaction(org.killbill.billing.client.model.gen.InvoicePaymentTransaction) PaymentTransaction(org.killbill.billing.client.model.gen.PaymentTransaction) InvoicePayment(org.killbill.billing.client.model.gen.InvoicePayment) AuditLevel(org.killbill.billing.util.api.AuditLevel) AccountTimeline(org.killbill.billing.client.model.gen.AccountTimeline) AuditLog(org.killbill.billing.client.model.gen.AuditLog)

Aggregations

AccountTimeline (org.killbill.billing.client.model.gen.AccountTimeline)7 AuditLog (org.killbill.billing.client.model.gen.AuditLog)4 AuditLevel (org.killbill.billing.util.api.AuditLevel)4 DateTime (org.joda.time.DateTime)2 Account (org.killbill.billing.client.model.gen.Account)2 Test (org.testng.annotations.Test)2 LocalDate (org.joda.time.LocalDate)1 EventSubscription (org.killbill.billing.client.model.gen.EventSubscription)1 InvoiceItem (org.killbill.billing.client.model.gen.InvoiceItem)1 InvoicePayment (org.killbill.billing.client.model.gen.InvoicePayment)1 InvoicePaymentTransaction (org.killbill.billing.client.model.gen.InvoicePaymentTransaction)1 PaymentTransaction (org.killbill.billing.client.model.gen.PaymentTransaction)1 Subscription (org.killbill.billing.client.model.gen.Subscription)1