/**
  * @throws Hypercharge\Errors\ValidationError
  * @return void
  */
 function validate()
 {
     $errors = new Errors\ValidationError();
     if (!preg_match('/^[a-f0-9]{32}$/', $this->unique_id)) {
         $errors->add('unique_id', 'must be 32 character hex string but was: ' . $this->unique_id);
     }
     if ($errors->flush()) {
         throw $errors;
     }
 }
 /**
  * @throws Hypercharge\Errors\ValidationError if not valid
  */
 function validate()
 {
     $errors = new Errors\ValidationError();
     $dateFormat = '/^\\d\\d\\d\\d-\\d\\d-\\d\\d$/';
     if (!preg_match($dateFormat, $this->start_date)) {
         $errors->add('start_date', 'must be yyyy-mm-dd');
     }
     if (!empty($this->end_date) && !preg_match($dateFormat, $this->end_date)) {
         $errors->add('end_date', 'must be yyyy-mm-dd');
     }
     if (is_int($this->page) && $this->page <= 0) {
         $errors->add('page', 'must be an integer greater or equal 1');
     }
     if ($errors->flush()) {
         throw $errors;
     }
 }
 function __construct($data)
 {
     if (!in_array(@$data['transaction_type'], self::$allowedTypes)) {
         throw Errors\ValidationError::create('transaction_type', 'value invalid: "' . @$data['transaction_type'] . '"');
     }
     Helper::assign($this, $data);
     if (isset($this->transaction_id)) {
         $this->transaction_id = Helper::appendRandomId($this->transaction_id);
     }
 }
 /**
  * $data hash of format:
  * {
  *		type: "WpfPayment",
  *		amount: 1000,
  *		currency: "USD",
  *		...
  *	}
  *
  * @param array $data
  */
 function __construct($data)
 {
     if (!in_array(@$data['type'], self::$allowedTypes)) {
         throw Errors\ValidationError::create('type', 'must be one of "' . join(self::$allowedTypes, '", "') . '" but is: "' . @$data['type'] . '"');
     }
     Helper::assign($this, $data);
     if (isset($this->transaction_id)) {
         $this->transaction_id = Helper::appendRandomId($this->transaction_id);
     }
 }
 function testValidateThrows()
 {
     $this->expectException(Errors\ValidationError::create('unique_id', 'must be 32 character hex string: 345'));
     $c = new SimplePaymentReturningRequest('cancel', '345');
     $c->validate();
 }
 function testValidateEndDateFormat()
 {
     $this->expectException(Errors\ValidationError::create('end_date', 'must be yyyy-mm-dd'));
     $r = new ReconcileByDateRequest(array('start_date' => '2014-11-01', 'end_date' => '2019-1-1'));
     $r->validate();
 }