public function PaymentLineItemsInputTest::testValidate in Payment 8.2
@covers ::validate
File
- tests/
src/ Unit/ Element/ PaymentLineItemsInputTest.php, line 560
Class
- PaymentLineItemsInputTest
- @coversDefaultClass \Drupal\payment\Element\PaymentLineItemsInput
Namespace
Drupal\Tests\payment\Unit\ElementCode
public function testValidate() {
$line_item_name_a = $this
->randomMachineName();
$line_item_name_b = $this
->randomMachineName();
$line_item_name_c = $this
->randomMachineName();
$root_element_name = $this
->randomMachineName();
$form_build = array(
'foo' => array(
'#name' => $root_element_name,
'#parents' => array(
'foo',
),
// The line items are built below.
'line_items' => [],
),
);
$line_item_a = $this
->createMock(PaymentLineItemInterface::class);
$line_item_b = $this
->createMock(PaymentLineItemInterface::class);
$line_item_c = $this
->createMock(PaymentLineItemInterface::class);
/** @var \PHPUnit\Framework\MockObject\MockObject[] $line_items */
$line_items = array(
$line_item_name_a => $line_item_a,
$line_item_name_b => $line_item_b,
$line_item_name_c => $line_item_c,
);
foreach ($line_items as $line_item_name => $line_item) {
$form_build['foo']['line_items'][$line_item_name] = array(
'plugin_form' => array(
'#foo' => $this
->randomMachineName(),
),
);
$line_item
->expects($this
->atLeastOnce())
->method('getName')
->willReturn($line_item_name);
$line_item
->expects($this
->once())
->method('validateConfigurationForm')
->with($form_build['foo']['line_items'][$line_item_name]['plugin_form']);
$line_item
->expects($this
->once())
->method('submitConfigurationForm')
->with($form_build['foo']['line_items'][$line_item_name]['plugin_form']);
}
$form_state = new FormState();
$form_state
->set('payment.element.payment_line_items_input.configured.' . $root_element_name, array_values($line_items));
$form_state
->setValues(array(
'foo' => array(
'line_items' => array(
$line_item_name_a => array(
'weight' => 3,
),
$line_item_name_b => array(
'weight' => 1,
),
$line_item_name_c => array(
'weight' => 2,
),
),
),
));
$this->sut
->validate($form_build['foo'], $form_state, $form_build);
$element = $this->sut;
$line_items = $element::getLineItems($form_build['foo'], $form_state);
$this
->assertSame(array(
$line_item_b,
$line_item_c,
$line_item_a,
), $line_items);
}