Example #1
0
 /**
  * Test that data is filled in properly
  *
  *
  * @since 0.4.0
  *
  * @group crud
  * @group variant_crud
  *
  * @covers \ingot\testing\crud\update::fill_in()
  */
 public function testUpdate()
 {
     $params = ['type' => 'click', 'group_ID' => rand(), 'content' => rand()];
     $created = \ingot\testing\crud\variant::create($params);
     $variant = \ingot\testing\crud\variant::read($created);
     $variant['content'] = 'I AM THE BATMAN';
     \ingot\testing\crud\variant::update($variant, $created);
     $variant = \ingot\testing\crud\variant::read($created);
     $this->assertFalse(is_wp_error($variant));
     $this->assertSame('I AM THE BATMAN', $variant['content']);
 }
Example #2
0
 /**
  * Save variants and return IDs
  *
  * @since 0.4.0
  *
  * @param array $group Group config -- variants key should be an array of variant configs to save
  *
  * @return array||WP_Error
  */
 protected function save_variants($group)
 {
     $variants_ids = [];
     $variants = helpers::v('variants', $group, []);
     $product_id = null;
     if ('price' == $group['type']) {
         $product_id = helpers::v('product_ID', $group['meta'], null);
         if (!is_numeric($product_id)) {
             return new \WP_Error('ingot-no-product-id', __('No product ID was set.', 'ingot'));
         }
     }
     if (isset($group['ID'])) {
         $group_id = $group['ID'];
     } elseif (isset($group['id'])) {
         $group_id = $group['id'];
     } else {
         return new \WP_Error('ingot-generalized-failure');
     }
     if (!empty($variants)) {
         foreach ($variants as $variant) {
             if (is_numeric($variant)) {
                 continue;
             }
             $variant['group_ID'] = $group_id;
             $variant['type'] = $group['type'];
             if ('price' == $group['type']) {
                 $variant['content'] = $product_id;
             }
             if ((!isset($variant['content']) || empty($variant['content'])) && 'button_color' == $group['sub_type']) {
                 $variant['content'] = '  ';
             }
             if (!isset($variant['ID']) || 0 == abs($variant['ID'])) {
                 unset($variant['ID']);
                 $_variant_id = variant::create($variant);
             } else {
                 $_variant_id = variant::update($variant, $variant['ID']);
             }
             if (is_wp_error($_variant_id)) {
                 return $_variant_id;
             }
             $variants_ids[] = $_variant_id;
         }
     }
     return $variants_ids;
 }