예제 #1
0
 /**
  * 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']);
     }
 }
예제 #2
0
 /**
  * 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'));
 }
예제 #4
0
 /**
  * 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];
 }
예제 #5
0
 /**
  * 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);
             }
         }
     }
 }
예제 #6
0
 /**
  * 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);
     }
 }
예제 #7
0
 /**
  * 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));
     }
 }