/** * Test that EDD sample data generation is valid * * @since 1.1.0 * * @group price * @group edd_price */ public function testDataGeneration() { $group_data = ingot_test_data_price::edd_tests(10); $group = \ingot\testing\crud\group::read($group_data['group_ID']); $this->assertTrue(\ingot\testing\crud\group::valid($group)); foreach ($group_data['variants'] as $variant_id) { $this->assertTrue(is_numeric($variant_id)); $variant = \ingot\testing\crud\variant::read($variant_id); $this->assertTrue(\ingot\testing\crud\variant::valid($variant)); $this->assertEquals($variant['content'], $group['meta']['product_ID']); } }
/** * Get total itterations and possible conversions for a group * * @since 1.1.0 * * @param array $group Group config array * @param bool $return_conversions Optional. To count conversions as well. Default is false * * @return array|int Total iterations as an integer or both iterations and conversions in an array */ public static function get_total(array $group, $return_conversions = false) { $total = $conversions = 0; if (\ingot\testing\crud\group::valid($group)) { $levers = helpers::v('levers', $group, []); if (!empty($levers)) { foreach ($levers[$group['ID']] as $lever) { if (is_object($lever) && method_exists($lever, 'getDenominator')) { $total += $lever->getDenominator(); if ($return_conversions) { $conversions += $lever->getNumerator(); } } } } } if (!$return_conversions) { return $total; } else { return ['total' => $total, 'conversion' => $conversions]; } }
/** * Test setting up tagline tests * * @since 1.1.0 * * @group group * @group destination * * @covers \ingot\testing\tests\click\destination\init::set_tracking() */ public function testTagline() { ingot_test_desitnation::create('page', false); $args = ['name' => rand(), 'type' => 'click', 'sub_type' => 'destination', 'meta' => ['destination' => 'page', 'link' => 'https://bats.com', 'page' => 11, 'is_tagline' => true]]; $group_id = \ingot\testing\crud\group::create($args, true); $group = \ingot\testing\crud\group::read($group_id); $this->assertTrue(\ingot\testing\crud\group::valid($group)); $content_1 = 'hats'; $args = ['type' => 'click', 'group_ID' => $group_id, 'content' => $content_1]; $variant_1 = \ingot\testing\crud\variant::create($args, true); $content_2 = 'bats'; $args = ['type' => 'click', 'group_ID' => $group_id, 'content' => $content_2]; $variant_2 = \ingot\testing\crud\variant::create($args, true); $group['variants'] = [$variant_1, $variant_2]; \ingot\testing\crud\group::update($group, $group_id, true); \ingot\testing\tests\click\destination\init::set_tracking(); $this->assertTrue(in_array(\ingot\testing\tests\click\destination\init::get_test($group_id), [$variant_1, $variant_2])); $variant_id = \ingot\testing\tests\click\destination\init::get_test($group_id); $variant = \ingot\testing\crud\variant::read($variant_id); $tagline = $variant['content']; $this->assertSame($tagline, get_bloginfo('description', 'display')); }
/** * Get variant ID, by group ID. * * If no variant chosen, makes selection * * @since 1.1.0 * * @param int $group_id Group ID to get variant for * * @return int */ public static function get_test($group_id) { if (!isset(self::$tests[$group_id])) { if (!cookie::get_cookie($group_id)) { $group = group::read($group_id); if (group::valid($group) && !empty($group['variants'])) { $bandit = new content($group_id); $variant = $bandit->choose(); if (is_a($variant, 'MaBandit\\Lever')) { /** @var \MaBandit\Lever $variant */ $variant = $variant->getValue(); } if (is_numeric($variant)) { cookie::set_cookie($group_id, $variant); } } else { return false; } } else { $variant = cookie::get_cookie($group_id); } self::$tests[$group_id] = $variant; } return self::$tests[$group_id]; }
/** * Add test to cookie * * @since 1.1.0 * * @access protected * * @param array $group Group config */ protected function add_test($group) { if (group::valid($group)) { $test = $this->setup_test_object($group); if (is_object($test)) { $product_ID = \ingot\testing\utility\price::get_product_ID($group); if (is_object($test) && is_numeric($product_ID)) { $this->cookie[$group['sub_type']][$product_ID] = wp_json_encode($test); } } } }
/** * Get product ID from a group * * @param array|int $group * * @return int|null */ public static function get_product_ID($group) { if (is_numeric($group)) { $group = \ingot\testing\crud\group::read($group); } if (\ingot\testing\crud\group::valid($group)) { return (int) helpers::v('product_ID', $group['meta'], null); } }
/** * 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)); } }