/** * @covers EventTicket::getAvailableForDateTime() */ public function testGetAvailableForDatetimeWithQuantity() { $ticket = new EventTicket(); $ticket->StartType = 'Date'; $ticket->StartDate = date('Y-m-d', time() - 3600 * 24); $ticket->EndType = 'Date'; $ticket->EndDate = date('Y-m-d', time() + 3600 * 24); $ticket->write(); $time = new RegisterableDateTime(); $time->write(); $ticket->Available = 50; $avail = $ticket->getAvailableForDateTime($time); $this->assertEquals(50, $avail['available']); // Create a registration that consumes some of the tickets. $rego = new EventRegistration(); $rego->Status = 'Valid'; $rego->TimeID = $time->ID; $rego->write(); $rego->Tickets()->add($ticket, array('Quantity' => 49)); $avail = $ticket->getAvailableForDateTime($time); $this->assertEquals(1, $avail['available']); // Then check we can exclude it. $avail = $ticket->getAvailableForDateTime($time, $rego->ID); $this->assertEquals(50, $avail['available']); // Then bump up the quantity so there are no more available. $rego->Tickets()->remove($ticket); $rego->Tickets()->add($ticket, array('Quantity' => 50)); $avail = $ticket->getAvailableForDateTime($time); $this->assertFalse($avail['available']); }
/** * @covers RegisterableDateTime::getRemainingCapacity() */ public function testGetRemainingCapacity() { $event = $this->objFromFixture('RegisterableEvent', 'event'); $datetime = $this->objFromFixture('RegisterableDateTime', 'datetime'); $ticket = $this->objFromFixture('EventTicket', 'ticket'); $datetime->Capacity = 0; $datetime->write(); $this->assertEquals(true, $datetime->getRemainingCapacity()); $datetime->Capacity = 50; $datetime->write(); $this->assertEquals(50, $datetime->getRemainingCapacity()); $rego = new EventRegistration(); $rego->TimeID = $datetime->ID; $rego->write(); $rego->Tickets()->add($ticket, array('Quantity' => 49)); $this->assertEquals(1, $datetime->getRemainingCapacity()); $this->assertEquals(50, $datetime->getRemainingCapacity($rego->ID)); $rego->Tickets()->remove($ticket); $rego->Tickets()->add($ticket, array('Quantity' => 50)); $this->assertFalse(!!$datetime->getRemainingCapacity()); $this->assertEquals(50, $datetime->getRemainingCapacity($rego->ID)); }