function MerciTest::testMerciQuantityResources in MERCI (Manage Equipment Reservations, Checkout and Inventory) 8.2
Check quantity field logic.
File
- src/
Tests/ MerciTest.php, line 294 - Contains \Drupal\merci\Tests\MerciTest.
Class
- MerciTest
- Tests pager functionality.
Namespace
Drupal\merci\TestsCode
function testMerciQuantityResources() {
$settings = array(
'type' => 'merci_resource',
'field_merci_grouping' => array(
'target_id' => $this->term
->id(),
),
'field_merci_location' => array(
'target_id' => $this->office_hours
->id(),
),
'field_reservable_quantity' => 2,
);
$resource = $this
->createNode($settings);
$this
->drupalGet("/node/" . $resource
->id() . "/edit");
// Login the merci user.
$this
->drupalLogin($this->merci_user);
// Reserve one of the item.
$settings = array(
'field_quantity' => 2,
'merci_reservation_items' => array(
'target_id' => $resource
->id(),
),
);
$node = $this
->merciCreateReservation("Sunday 3pm", "Sunday 4pm", $settings);
$violations = $node
->validate();
$this
->assertFalse($violations
->has(0));
// Reserve two of the item.
$settings = array(
'field_quantity' => 3,
'merci_reservation_items' => array(
'target_id' => $resource
->id(),
),
);
$node = $this
->merciCreateReservation("Sunday 3pm", "Sunday 4pm", $settings);
$violations = $node
->validate();
$this
->assert(TRUE, $violations
->count());
$pattern = '@You have selected too many of the same item@';
$this
->assert((bool) preg_match($pattern, $violations
->get(0)
->getMessage()
->render()), $violations
->get(0)
->getMessage()
->render());
// Reserve one of the item.
$settings = array(
'field_quantity' => 1,
'merci_reservation_items' => array(
'target_id' => $resource
->id(),
),
);
$node = $this
->merciCreateReservation("Sunday 3pm", "Sunday 4pm", $settings);
$violations = $node
->validate();
$this
->assertFalse($violations
->has(0));
$node
->save();
// Reserve one of the item.
$settings = array(
'field_quantity' => 1,
'merci_reservation_items' => array(
'target_id' => $resource
->id(),
),
);
$node = $this
->merciCreateReservation("Sunday 3pm", "Sunday 4pm", $settings);
$violations = $node
->validate();
$this
->assertFalse($violations
->has(0));
// Reserve two of the item.
$settings = array(
'field_quantity' => 2,
'merci_reservation_items' => array(
'target_id' => $resource
->id(),
),
);
$node = $this
->merciCreateReservation("Sunday 3pm", "Sunday 4pm", $settings);
$violations = $node
->validate();
$pattern = '@is already reserved by:@';
$this
->assert((bool) preg_match($pattern, $violations
->get(0)
->getMessage()
->render()), $violations
->get(0)
->getMessage()
->render());
// Reserve two of the item.
$settings = array(
'field_quantity' => 2,
'merci_reservation_items' => array(
'target_id' => $resource
->id(),
),
);
$node = $this
->merciCreateReservation("Monday 3pm", "Monday 4pm", $settings);
$violations = $node
->validate();
$this
->assertFalse($violations
->has(0));
$node
->save();
$this
->drupalGet("/admin/structure/merci_line_item/" . $node
->id() . "/edit");
// Should fail.
// Reserve one of the item.
$settings = array(
'field_quantity' => 1,
'merci_reservation_items' => array(
'target_id' => $resource
->id(),
),
);
$node = $this
->merciCreateReservation("Monday 3pm", "Monday 4pm", $settings);
$violations = $node
->validate();
$node
->save();
$this
->drupalGet("/admin/structure/merci_line_item/" . $node
->id() . "/edit");
$pattern = '@is already reserved by:@';
$message = "There is a conflict";
$this
->assert((bool) preg_match($pattern, $violations
->get(0)
->getMessage()
->render()), $message);
}