public function test_release_rejected_when_new_version_is_less_than_latest() { $product = $this->product_factory->create_and_get(); $file1 = $this->factory->attachment->create_object('file.zip', $product->ID, array('post_mime_type' => 'application/zip')); /** @var Release $r1 */ $r1 = $this->release_factory->create_and_get(array('product' => $product->ID, 'file' => $file1, 'version' => '1.0', 'type' => Release::TYPE_MAJOR)); update_post_meta($product->ID, '_itelic_first_release', $r1->get_pk()); $file2 = $this->factory->attachment->create_object('file2.zip', $product->ID, array('post_mime_type' => 'application/zip')); $this->setExpectedException('\\InvalidArgumentException'); Release::create($product, get_post($file2), '0.9', Release::TYPE_MAJOR); }
/** * Create a release. * * @api * * @since 1.0 * * @param array $args * * @return \ITELIC\Release|WP_Error */ function itelic_create_release($args) { $defaults = array('product' => '', 'file' => '', 'version' => '', 'type' => '', 'status' => '', 'changelog' => ''); $args = wp_parse_args($args, $defaults); if (is_numeric($args['product'])) { $product = itelic_get_product($args['product']); } else { $product = $args['product']; } if (!$product) { return new WP_Error('invalid_product', __('Invalid Product', \ITELIC\Plugin::SLUG)); } if (is_numeric($args['file'])) { $file = get_post($args['file']); } else { $file = $args['file']; } if (!$file || get_post_type($file) != 'attachment') { return new WP_Error('invalid_file', __("Invalid File", \ITELIC\Plugin::SLUG)); } $version = $args['version']; $type = $args['type']; $status = $args['status']; $changelog = $args['changelog']; try { $release = \ITELIC\Release::create($product, $file, $version, $type, $status, $changelog); if (isset($args['security-message'])) { $release->add_meta('security-message', $args['security-message']); } return $release; } catch (InvalidArgumentException $e) { return new WP_Error('exception', $e->getMessage()); } }