/** * Test that we can query for these tests properly * * @since 1.1.0 * * @group group * @group destination * @group cookie * @group destination_cookie * * @covers \ingot\testing\tests\click\destination\init::get_destination_tests() */ public function testQuery() { ingot_test_data_price::edd_tests(); ingot_tests_data::make_groups(); $x = 0; foreach (\ingot\testing\tests\click\destination\types::destination_types() as $type) { if ('hook' == $type) { continue; } $data = ingot_test_desitnation::create($type); $this->assertTrue(is_numeric($data['group_ID'])); $the_groups[] = $data['group_ID']; $x++; } $groups = \ingot\testing\tests\click\destination\init::get_destination_tests(); $this->assertSame($x, count($groups)); $this->assertEquals($the_groups, $groups); }
/** * 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; }
/** * Data needed in app * * @since 0.2.0 * * @access protected * * @return array */ protected function vars() { return array('api' => esc_url_raw(util::get_url()), 'nonce' => wp_create_nonce('wp_rest'), 'partials' => esc_url_raw(INGOT_URL . 'assets/admin/partials/'), 'spinner_url' => trailingslashit(INGOT_URL) . 'assets/img/loading.gif', 'edd_active' => esc_attr(ingot_is_edd_active()), 'woo_active' => esc_attr(ingot_is_woo_active()), 'price_tests_enabled' => esc_attr(ingot_enable_price_testing()), 'click_type_options' => types::allowed_click_types(true), 'price_type_options' => types::allowed_price_types(), 'destinations' => \ingot\testing\tests\click\destination\types::destination_types(true, true), 'dev_mode' => INGOT_DEV_MODE); }
/** * Cehck getting destination from meta * * @since 1.1.0 * * @group group * @group destination * * @covers \ingot\testing\utility\destination::get_destination() */ public function testGetDestination() { foreach (\ingot\testing\tests\click\destination\types::destination_types() as $type) { if ('hook' == $type) { continue; } $args = ingot_test_desitnation::group_args($type); $data = ingot_test_desitnation::create($type); $group = \ingot\testing\crud\group::read($data['group_ID']); $this->assertEquals($type, \ingot\testing\utility\destination::get_destination($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']); } }
/** * Test that we can create all sorts of destination tests * * @since 1.1.0 * * @group group * @group group_crud * @group destination * * @covers \ingot\testing\crud\group::create() * @covers \ingot\testing\crud\crud::save() * @covers \ingot\testing\tests\click\destination\types::destination_types() * @covers \ingot\testing\utility\destination::prepare_meta() */ public function testCreateDestinationTest() { foreach (\ingot\testing\tests\click\destination\types::destination_types() as $type) { if ('hook' == $type) { continue; } $args = ingot_test_desitnation::group_args($type); $id = \ingot\testing\crud\group::create($args); $this->assertTrue(is_numeric($id)); $group = \ingot\testing\crud\group::read($id); $this->assertInternalType('array', $group); $this->assertTrue(\ingot\testing\crud\group::valid($group)); } }