/**
  * Check meta data is good
  *
  * @since 1.1.0
  */
 protected function verify_meta($meta)
 {
     foreach (['page', 'is_tagline', 'destination'] as $key) {
         if (!isset($meta[$key])) {
             return false;
         }
     }
     if (!is_bool($meta['is_tagline'])) {
         return false;
     }
     if (!is_numeric($meta['page'])) {
         return false;
     }
     return \ingot\testing\tests\click\destination\types::allowed_destination_type($meta['destination']);
 }
示例#2
0
 /**
  * Prepare the meta in group config array
  *
  * @since 1.1.0
  *
  * @param array $group Group config
  *
  * @return array|\WP_Error
  */
 public static function prepare_meta(array $group)
 {
     if (!isset($group['meta']) || !is_array($group['meta'])) {
         $group['meta'] = [];
     }
     $meta = $group['meta'];
     if (!isset($meta['destination']) || !types::allowed_destination_type($meta['destination'])) {
         return new \WP_Error('ingot-invalid-destination-type', __('Invalid destination', 'ingot'), ['destination' => helpers::v('destination', $meta, false), 'meta' => $meta]);
     }
     if ('page' == $meta['destination']) {
         if (!isset($meta['page'])) {
             return new \WP_Error('ingot-invalid-destination-page', __('Page destination types need a page ID', 'ingot'));
         } else {
             $meta['page'] = absint($meta['page']);
         }
     }
     if ('hook' == $meta['destination']) {
         if (!isset($meta['hook'])) {
             return new \WP_Error('ingot-invalid-destination-hook', __('Hook destination types need a hook.', 'ingot'));
         } else {
             $meta['hook'] = trim($meta['hook']);
         }
     }
     if (!isset($meta['is_tagline'])) {
         $meta['is_tagline'] = false;
     }
     $meta['is_tagline'] = (bool) $meta['is_tagline'];
     $group['meta'] = $meta;
     return $group;
 }
 /**
  * Track EDD sale conversions
  *
  * @since 1.1.0
  *
  * @group group
  * @group destination
  * @group edd
  *
  * @covers  \ingot\testing\tests\click\destination\hooks::edd_complete_purchase()
  * @covers  \ingot\testing\tests\click\destination\hooks::add_hooks()
  */
 public function testEDDConversionsSale()
 {
     if (ingot_is_edd_active()) {
         $this->assertTrue(\ingot\testing\tests\click\destination\types::allowed_destination_type('sale_edd'));
         $product = ingot_test_data_price::edd_create_simple_download(10);
         $data = ingot_test_desitnation::create('sale_edd');
         $group_id = $data['group_ID'];
         $this->assertTrue(is_numeric($group_id));
         $variants = $data['variants'];
         new \ingot\testing\bandit\content($group_id);
         $variant_id = \ingot\testing\tests\click\destination\init::get_test($group_id);
         $this->assertTrue(is_numeric($variant_id));
         \ingot\testing\tests\click\destination\init::set_tracking();
         $this->assertTrue(in_array(\ingot\testing\tests\click\destination\init::get_test($group_id), $variants));
         $variant_id = \ingot\testing\tests\click\destination\init::get_test($group_id);
         $hooks = new \ingot\testing\tests\click\destination\hooks([$group_id]);
         $payment_id = ingot_test_data_price::edd_create_simple_payment($product);
         edd_complete_purchase($payment_id, 'publish', 'pending');
         $group = \ingot\testing\crud\group::read($group_id);
         $totals = \ingot\testing\utility\group::get_total($group);
         $this->assertEquals(3, $totals['total']);
         $this->assertEquals(2, $totals['conversions']);
     }
 }