/** * Register a conversion for a destination test * * @since 1.1.0 * * @param int $group_id */ public static function conversion($group_id) { $variant_id = cookie::get_cookie($group_id); if (is_numeric($variant_id)) { ingot_register_conversion($variant_id); } }
/** * 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]; }
/** * * * @since 1.1.0 * * @group group * @group destination * @group cookie * @group destination_cookie * * @covers \ingot\testing\tests\click\destination\init::get_test() * @covers \ingot\testing\tests\click\destination\init::set_tracking() * @covers \ingot\testing\tests\click\destination\cookie::get_cookie() */ public function testCookieTracking() { $data = ingot_test_desitnation::create('page'); $group_id = $data['group_ID']; $this->assertTrue(is_numeric($group_id)); $group = \ingot\testing\crud\group::read($group_id); $this->assertInternalType('array', $group); $bandit = new \ingot\testing\bandit\content($group_id); $variant_id = $bandit->choose(); $this->assertTrue(is_numeric($variant_id)); \ingot\testing\tests\click\destination\init::set_tracking(); \ingot\testing\tests\click\destination\init::get_test($group_id); $obj = new \ingot\testing\object\group($group_id); $levers = $obj->get_levers(); $this->assertInternalType('array', $levers); $cookie_name = \ingot\testing\tests\click\destination\cookie::cookie_key($group_id); $variant_id = \ingot\testing\tests\click\destination\init::get_test($group_id); $this->assertTrue(is_numeric($variant_id)); $_COOKIE[$cookie_name] = $variant_id; $this->assertEquals($variant_id, \ingot\testing\tests\click\destination\cookie::get_cookie($group_id)); $obj = new \ingot\testing\object\group($group_id); $_levers = $obj->get_levers(); for ($i = 0; $i <= 10; $i++) { \ingot\testing\tests\click\destination\init::set_tracking(); } $obj = new \ingot\testing\object\group($group_id); $levers = $obj->get_levers(); $this->assertEquals($levers, $_levers); $this->assertInternalType('array', $levers); $this->assertArrayHasKey($group_id, $levers); $this->assertArrayHasKey($variant_id, $levers[$group_id]); $lever = $levers[$variant_id]; $this->assertInternalType('object', $lever); $this->assertEquals(0, $lever->getNumerator()); $this->assertEquals(1, $lever->getDenominator()); }