/** * 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']); }
/** * 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; }