You are here

function PaymentTestPaymentLineItemWebTestCase::testPaymentLineItemHandling in Payment 7

Test line item handling.

File

tests/payment_test/tests/PaymentTestPaymentLineItemWebTestCase.test, line 31
Contains class PaymentTestPaymentLineItemWebTestCase.

Class

PaymentTestPaymentLineItemWebTestCase
Tests line item handling.

Code

function testPaymentLineItemHandling() {
  $payment = new Payment();
  $payment
    ->setLineItem(new PaymentLineItem(array(
    'name' => 'foo',
    'amount' => 19.11,
    'quantity' => -1.1,
    'tax_rate' => 0.1,
  )));

  // Test Payment::setLineItem();
  $this
    ->assertTrue($payment->line_items['foo']->name == 'foo', 'Payment::setLineItem() adds a PaymentLineItem object to Payment::line_items.');

  // Test Payment::unitAmount() without tax.
  $this
    ->assertTrue($payment->line_items['foo']
    ->unitAmount(FALSE) == 19.11, 'Payment::unitAmount() returns amount excluding tax.');

  // Test Payment::unitAmount() with tax.
  $this
    ->assertTrue($payment->line_items['foo']
    ->unitAmount(TRUE) == 21.021, 'Payment::unitAmount() returns amount including tax.');

  // Test Payment::totalAmount() without tax.
  $this
    ->assertEqual(round($payment
    ->totalAmount(FALSE), 3), round(-21.021, 3));
  $payment
    ->setLineItem(new PaymentLineItem(array(
    'name' => 'bar',
    'amount' => 19.78,
  )));

  // Test Payment::totalAmount() without passed on amounts.
  $this
    ->assertEqual(round($payment
    ->totalAmount(TRUE), 4), round(-3.3431, 4));
  $payment
    ->setLineItem(new PaymentLineItem(array(
    'name' => 'beer',
    'amount' => 47.11,
  )));

  // Test Payment::totalAmount() with passed on amounts.
  $line_items = $payment
    ->getLineItems('payment_test');
  $this
    ->assertEqual(round($payment
    ->totalAmount(TRUE, $line_items), 4), round(-3.3431, 4));

  // Test payment_line_item_get_specific() and whether
  // Payment::getLineItems() can get line items that are not exposed
  // through hook_payment_line_item_info().
  $line_items = $payment
    ->getLineItems('beer');
  $this
    ->assertTrue($payment
    ->totalAmount(TRUE, $line_items) == 47.11, 'payment_line_item_get_specific() only returns the requested line item.');

  // Test payment_line_item_get_all().
  $line_items = $payment
    ->getLineItems('payment_all');
  $this
    ->assertTrue(count($line_items) == 3, 'payment_line_item_get_all() returns all line items.');
}