diff --git a/backend/app/plugins/wiaas/assets/js/wiaas-template-admin-write-panels.js b/backend/app/plugins/wiaas/assets/js/wiaas-template-admin-write-panels.js
index c12c4c2..24562f8 100644
--- a/backend/app/plugins/wiaas/assets/js/wiaas-template-admin-write-panels.js
+++ b/backend/app/plugins/wiaas/assets/js/wiaas-template-admin-write-panels.js
@@ -1,76 +1,23 @@
jQuery(function ($) {
- var $edit_in_cart = $('.bundle_edit_in_cart'),
- $group_mode_select = $('select#_wc_pb_group_mode'),
- $bundled_products_panel = $('#bundled_product_data'),
- $bundled_products_toolbar = $bundled_products_panel.find('.toolbar'),
- $template_products_container_hardware = $('.wiaas-template-items_hardware'),
- $template_products_container_software = $('.wiaas-template-items_software'),
- $template_products_container_services = $('.wiaas-template-items_services'),
- $template_products_container_isntallation = $('.wiaas-template-items_installation'),
+ var $template_categories_container_hardware = $('.wiaas-template-items_hardware'),
+ $template_categories_container_software = $('.wiaas-template-items_software'),
+ $template_categories_container_services = $('.wiaas-template-items_services'),
+ $template_categories_container_isntallation = $('.wiaas-template-items_installation'),
- $template_products = $('.wc-bundled-item',
- $template_products_container_services,
- $template_products_container_software,
- $template_products_container_hardware,
- $template_products_container_isntallation),
+ $template_categories = $('.wc-bundled-item',
+ $template_categories_container_services,
+ $template_categories_container_software,
+ $template_categories_container_hardware,
+ $template_categories_container_isntallation),
$template_search_hardware = $('#wiaastemplate_products_hardware'),
$template_search_software = $('#wiaastemplate_products_software'),
$template_search_services = $('#wiaastemplate_products_services'),
$template_search_installation = $('#wiaastemplate_products_installation'),
- bundled_product_objects = {},
- bundled_products_add_count = $template_products.length,
- block_params = {
- message: null,
- overlayCSS: {
- background: '#fff',
- opacity: 0.6
- }
- };
+ template_category_objects = {},
+ template_category_add_count = $template_categories.length;
- $.fn.wc_bundles_select2 = function () {
- $(document.body).trigger('wc-enhanced-select-init');
- };
-
- // Bundle type move stock msg up.
- $('.bundle_stock_msg').appendTo('._manage_stock_field .description');
-
- // Simple type options are valid for bundles.
- $('.show_if_simple:not(.hide_if_bundle)').addClass('show_if_bundle');
-
- $('body').on('woocommerce-product-type-change', function (event, select_val) {
-
- if ('bundle' === select_val) {
-
- $('.show_if_external').hide();
- $('.show_if_bundle').show();
-
- $('input#_manage_stock').change();
-
- $('#_nyp').change();
- }
-
- });
-
- $group_mode_select.change(function () {
- if ($.inArray($group_mode_select.val(), wc_bundles_admin_params.group_modes_with_parent) === -1) {
- $edit_in_cart.hide();
- } else {
- $edit_in_cart.show();
- }
- });
-
- // Downloadable support.
- $('input#_downloadable').change(function () {
- $('select#product-type').change();
- });
-
- // Trigger product type change.
- $('select#product-type').change();
-
- // Trigger group mode change.
- $group_mode_select.change();
init_event_handlers();
@@ -81,52 +28,50 @@ jQuery(function ($) {
$template_search_hardware
.on('change', function () {
- addSearchedProduct('hardware', $template_search_hardware, $template_products_container_hardware)
+ addSearchedTemplateCategory('hardware', $template_search_hardware, $template_categories_container_hardware)
});
$template_search_software
.on('change', function () {
- addSearchedProduct('software', $template_search_software, $template_products_container_software)
+ addSearchedTemplateCategory('software', $template_search_software, $template_categories_container_software)
});
$template_search_installation
.on('change', function () {
- addSearchedProduct('services', $template_search_installation, $template_products_container_isntallation)
+ addSearchedTemplateCategory('installation', $template_search_installation, $template_categories_container_isntallation)
});
$template_search_services
.on('change', function () {
- addSearchedProduct('installation', $template_search_services, $template_products_container_services)
+ addSearchedTemplateCategory('services', $template_search_services, $template_categories_container_services)
});
- function addSearchedProduct(options, search, container) {
- var bundled_product_ids = search.val(),
- bundled_product_id = bundled_product_ids && bundled_product_ids.length > 0 ? bundled_product_ids.shift() : false;
+ function addSearchedTemplateCategory(options, search, container) {
+ var template_category_ids = search.val(),
+ template_category_id = template_category_ids && template_category_ids.length > 0 ? template_category_ids.shift() : false;
var template_category_title =search.text();
- if (!bundled_product_id) {
+ if (!template_category_id) {
return false;
}
search.val([]).change();
- $bundled_products_panel.block(block_params);
-
- bundled_products_add_count++;
+ template_category_add_count++;
var data = {
action: 'wiaas_add_template_product',
post_id: woocommerce_admin_meta_boxes.post_id,
- id: bundled_products_add_count,
+ id: template_category_add_count,
title: template_category_title,
- product_id: bundled_product_id,
+ template_category_id: template_category_id,
security: wc_bundles_admin_params.add_bundled_product_nonce,
options: options,
};
@@ -140,13 +85,11 @@ jQuery(function ($) {
container.append(response.markup);
var $added = $('.wiaas-template-item', container).last(),
- added_id = 'bundled_item_' + bundled_products_add_count;
+ added_id = 'bundled_item_' + template_category_add_count;
$added.data('bundled_item_id', added_id);
$added.wc_bundles_select2();
- $bundled_products_panel.trigger('wc-bundles-added-bundled-product');
-
} else if (response.message !== '') {
window.alert(response.message);
}
@@ -161,8 +104,6 @@ jQuery(function ($) {
}
search.text('');
- $bundled_products_panel.unblock();
-
});
}, 250);
@@ -170,7 +111,7 @@ jQuery(function ($) {
return false;
}
- $template_products_container_isntallation
+ $template_categories_container_isntallation
// Remove Item.
.on('click', 'a.remove_row', function (e) {
@@ -181,15 +122,13 @@ jQuery(function ($) {
$el.find('*').off();
$el.remove();
- delete bundled_product_objects[el_id];
-
- $bundled_products_panel.triggerHandler('wc-bundled-products-changed');
+ delete template_category_objects[el_id];
e.preventDefault();
});
- $template_products_container_hardware
+ $template_categories_container_hardware
// Remove Item.
.on('click', 'a.remove_row', function (e) {
@@ -200,15 +139,13 @@ jQuery(function ($) {
$el.find('*').off();
$el.remove();
- delete bundled_product_objects[el_id];
-
- $bundled_products_panel.triggerHandler('wc-bundled-products-changed');
+ delete template_category_objects[el_id];
e.preventDefault();
});
- $template_products_container_software
+ $template_categories_container_software
// Remove Item.
.on('click', 'a.remove_row', function (e) {
@@ -219,15 +156,13 @@ jQuery(function ($) {
$el.find('*').off();
$el.remove();
- delete bundled_product_objects[el_id];
-
- $bundled_products_panel.triggerHandler('wc-bundled-products-changed');
+ delete template_category_objects[el_id];
e.preventDefault();
});
- $template_products_container_services
+ $template_categories_container_services
// Remove Item.
.on('click', 'a.remove_row', function (e) {
@@ -238,9 +173,7 @@ jQuery(function ($) {
$el.find('*').off();
$el.remove();
- delete bundled_product_objects[el_id];
-
- $bundled_products_panel.triggerHandler('wc-bundled-products-changed');
+ delete template_category_objects[el_id];
e.preventDefault();
diff --git a/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-admin-template-selection.php b/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-admin-template-selection.php
index e1012a6..2fca714 100644
--- a/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-admin-template-selection.php
+++ b/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-admin-template-selection.php
@@ -3,27 +3,35 @@
class Wiaas_Admin_Template_Selection {
public static function init() {
- add_action('add_meta_boxes', array(__CLASS__, 'create_custom_meta_box'), 100);
- add_action('woocommerce_process_product_meta_bundle', array(__CLASS__, 'save_custom_content_meta_box'), 10, 1);
+ add_action('add_meta_boxes', array(__CLASS__, 'create_template_meta_box'), 100);
+ add_action('woocommerce_process_product_meta_bundle', array(__CLASS__, 'save_template_content_meta_box'), 10, 1);
// Processes and saves type-specific data.
add_action('woocommerce_admin_process_product_object', array(__CLASS__, 'validate_bundle'), 11);
}
- public static function create_custom_meta_box() {
+ /**
+ * Renders template selection meta box
+ */
+ public static function create_template_meta_box() {
add_meta_box(
'template_product_meta_box',
__('Choose package template (optional)', 'cmb'),
- 'Wiaas_Admin_Template_Selection::add_custom_content_meta_box',
+ 'Wiaas_Admin_Template_Selection::add_template_content_meta_box',
'product',
'normal',
'high'
);
}
-
- public static function add_custom_content_meta_box($post) {
+ /**
+ * Fill in the value of template selection dropdown,
+ * and render template categories of the selected template
+ *
+ * @param $post WP_Post object
+ */
+ public static function add_template_content_meta_box($post) {
$value = get_post_meta($post->ID, '_select_template', true);
@@ -49,49 +57,82 @@ class Wiaas_Admin_Template_Selection {
$template_products_data = self::show_template_products($value);
self::render_template_products($template_products_data['hardware']);
- self::render_template_products($template_products_data['service']);
+ self::render_template_products($template_products_data['services']);
self::render_template_products($template_products_data['installation']);
self::render_template_products($template_products_data['software']);
?> $template_products_hardware,
- 'service' => $template_products_service,
+ 'services' => $template_products_services,
'installation' => $template_products_installation,
'software' => $template_products_software
);
}
+ /**
+ * Render html of template categories
+ *
+ * @param $template_products array containing template category information
+ */
public static function render_template_products($template_products) {
if (!empty($template_products)) {
@@ -108,90 +149,43 @@ class Wiaas_Admin_Template_Selection {
}
}
- public static function get_product_categories($category_meta) {
- $category_objects = array();
+ /**
+ * Save selected template
+ *
+ * @param $post_id WP_Post
+ */
- if (empty($category_meta)) {
- return array();
- }
-
- foreach ($category_meta as $meta) {
-
- if (!empty($meta)) {
-
-
- $category_template_id = $meta['template_category_id'];
-
- $template_category_object = new Wiaas_Template_Category_Object(
- $category_template_id,
- $meta['template_category_title'],
- $meta['quantity']);
-
- $category_objects[$category_template_id] = $template_category_object;
- }
-
- }
- return empty($category_objects) ? null : $category_objects;
- }
-
- public static function get_bundled_product_categories($bundled_items) {
-
- $template_category_objects = array();
- foreach ($bundled_items as $item_id => $item) {
- $item_data = $item->get_data();
- $post_terms = wp_get_object_terms($item->get_product_id(), 'template_category', array('fields' => 'id=>name'));
-
- if (!empty($post_terms) && !is_wp_error($post_terms)) {
-
- $cat = '';
- $category_template_id = '';
-
- foreach ($post_terms as $id => $term) {
- $cat = $term;
- $category_template_id = $id;
- }
-
- $template_category_object = new Wiaas_Template_Category_Object(
- $category_template_id,
- $cat,
- $item_data['quantity_max']);
- $template_category_objects[$category_template_id] = $template_category_object;
-
- }
- }
-
- return $template_category_objects;
- }
-
-
- function save_custom_content_meta_box($post_id) {
+ function save_template_content_meta_box($post_id) {
$selected_template = $_POST['_select_template'];
- if (!empty($selected_template))
- update_post_meta($post_id, '_select_template', esc_attr($selected_template));
- else {
- update_post_meta($post_id, '_select_template', '');
- }
+
+ WC_Product_Template::bind_selected_template_to_product($selected_template, $post_id);
}
+ /**
+ * Get the template categories from bundle products and selected template
+ * Compare template categories and quantities that are required by the template with those in bundle products
+ *
+ * Admin error is added if validation is not satisfied
+ *
+ * @param $product WC_Product_Bundle
+ */
public static function validate_bundle($product) {
if ($product->get_type() == 'bundle') {
$selected_template = $_POST['_select_template'];
$bundled_items = $product->get_bundled_items('view');
- $products_form_template = self::show_template_products($selected_template);
+ $template_categories_form_template = self::show_template_products($selected_template);
- $missing_categories = array();
- $insufficient_product_quantities = array();
+ $missing_template_categories = array();
+ $insufficient_template_category_quantities = array();
-
- $categories_form_template = self::get_categories_from_templates($products_form_template);
- $categories_form_bundle = self::get_bundled_product_categories($bundled_items);
+ $categories_form_template = self::get_categories_from_templates($template_categories_form_template);
+ $categories_form_bundle = WC_Product_Template::extract_bundled_product_categories($bundled_items);
$bundle_category_keys = array_keys($categories_form_bundle);
-
if (!empty($categories_form_template)) {
foreach ($categories_form_template as $category) {
@@ -200,7 +194,7 @@ class Wiaas_Admin_Template_Selection {
if (!in_array($template_cat_id, $bundle_category_keys)) {
- array_push($missing_categories, $category->name);
+ array_push($missing_template_categories, $category->name);
} else {
@@ -208,37 +202,25 @@ class Wiaas_Admin_Template_Selection {
$quantity_from_template = $category->quantity;
if ((int)($quantity_from_template) !== $product_from_bundle_quantity) {
- array_push($insufficient_product_quantities, $category->name);
+ array_push($insufficient_template_category_quantities, $category->name);
}
}
}
}
- $categories_message = implode(',', $missing_categories);
- $quantity_message = implode(',', $insufficient_product_quantities);
+ $template_categories_message = implode(',', $missing_template_categories);
+ $quantity_message = implode(',', $insufficient_template_category_quantities);
- if (!empty($missing_categories)) {
- WC_PB_Meta_Box_Product_Data::add_admin_error(__(' WIAAS This product bundle does not correspond to selected template Categories missing: ' . $categories_message, 'woocommerce-product-bundles'));
+ if (!empty($missing_template_categories)) {
+ WC_PB_Meta_Box_Product_Data::add_admin_error(__(' WIAAS This product bundle does not correspond to selected template Categories missing: ' . $template_categories_message, 'woocommerce-product-bundles'));
}
- if (!empty($insufficient_product_quantities)) {
+ if (!empty($insufficient_template_category_quantities)) {
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' WIAAS This product bundle does not correspond to selected template Categories with different quantities: ' . $quantity_message, 'woocommerce-product-bundles'));
}
}
}
-
- public static function get_category_ids_form_bundle($product) {
- $products_form_budnle = $product->get_bundled_data_items();
- $product_ids = array();
-
- foreach ($products_form_budnle as $product) {
- array_push($product_ids, $product->get_id());
- }
-
- return self::get_product_categories($product_ids);
-
- }
}
Wiaas_Admin_Template_Selection::init();
diff --git a/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-admin-ajax.php b/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-admin-ajax.php
index 656f0ef..18e0ab5 100644
--- a/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-admin-ajax.php
+++ b/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-admin-ajax.php
@@ -21,6 +21,10 @@ class Wiaas_Template_Admin_Ajax {
}
+ /**
+ * An ajax callback action for handling template selection
+ */
+
public static function ajax_handle_template_selection() {
$selected_template_id = intval($_POST['selected_template']);
@@ -34,7 +38,7 @@ class Wiaas_Template_Admin_Ajax {
if (!empty($template_products)) {
ob_start();
Wiaas_Admin_Template_Selection::render_template_products($template_products['hardware']);
- Wiaas_Admin_Template_Selection::render_template_products($template_products['service']);
+ Wiaas_Admin_Template_Selection::render_template_products($template_products['services']);
Wiaas_Admin_Template_Selection::render_template_products($template_products['installation']);
Wiaas_Admin_Template_Selection::render_template_products($template_products['software']);
@@ -53,7 +57,7 @@ class Wiaas_Template_Admin_Ajax {
check_ajax_referer('wc_bundles_add_bundled_product', 'security');
$loop = intval($_POST['id']);
- $product_id = intval($_POST['product_id']);
+ $template_category_id = intval($_POST['template_category_id']);
$title = $_POST['title'];
$options = $_POST['options'];
@@ -70,13 +74,13 @@ class Wiaas_Template_Admin_Ajax {
}
/**
- *
+ * Handles adding template categories search.
*/
public static function ajax_wiaas_template_category_search() {
- $term = ($_POST['term']);
+ $term = wp_unslash($_GET['term']);
$response = array();
-
+
$terms = get_terms(array(
'taxonomy' => 'template_category',
'name__like' => $term
diff --git a/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-products.php b/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-products.php
index ddb5e54..9e50ed0 100644
--- a/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-products.php
+++ b/backend/app/plugins/wiaas/includes/admin/template/class-wiaas-template-products.php
@@ -7,7 +7,6 @@ class Wiaas_template {
public static function init() {
add_filter('product_type_selector', array(__CLASS__, 'add_template_product_type'));
- add_action('admin_footer', array(__CLASS__, 'templates_custom_js'));
add_filter('woocommerce_product_data_tabs', array(__CLASS__, 'custom_product_tabs'));
add_action('woocommerce_product_data_panels', array(__CLASS__, 'wiaastemplate_product_tab_content_all'));
add_action('woocommerce_admin_process_product_object', array(__CLASS__, 'save_wiaastemplate'));
@@ -35,7 +34,7 @@ class Wiaas_template {
}
/**
- * Add to product type drop down.
+ * Add template product type drop down.
*/
function add_template_product_type($types) {
@@ -48,27 +47,7 @@ class Wiaas_template {
/**
- * Show pricing fields for template product.
- */
- function templates_custom_js() {
-
- if ('product' != get_post_type()) :
- return;
- endif;
-
- ?>
- " style="width: 250px;"
name="template_product"
data-placeholder=""
- data-action="woocommerce_json_search_products" multiple="multiple" data-limit="500">
+ multiple="multiple" data-limit="500">
@@ -154,7 +140,7 @@ class Wiaas_template {
/**
- * Save the custom fields.
+ * Save the template categories that are bind to template.
*/
function save_wiaastemplate($post_id) {
@@ -163,14 +149,21 @@ class Wiaas_template {
$posted_template_data_installation = isset($_POST['template_data_installation']) ? $_POST['template_data_installation'] : false;
$posted_template_data_software = isset($_POST['template_data_software']) ? $_POST['template_data_software'] : false;
- self::save_template_product_meta($post_id, $posted_template_data_hardware, 'hardware');
- self::save_template_product_meta($post_id, $posted_template_data_services, 'services');
- self::save_template_product_meta($post_id, $posted_template_data_installation, 'installation');
- self::save_template_product_meta($post_id, $posted_template_data_software, 'software');
+ self::process_and_save_template_product_meta($post_id, $posted_template_data_hardware, 'hardware');
+ self::process_and_save_template_product_meta($post_id, $posted_template_data_services, 'services');
+ self::process_and_save_template_product_meta($post_id, $posted_template_data_installation, 'installation');
+ self::process_and_save_template_product_meta($post_id, $posted_template_data_software, 'software');
}
- public static function save_template_product_meta($post_id, $posted_template_data, $option) {
+ /**
+ * Get extract posted data and save them to meta
+ *
+ * @param $post_id integer id of the template
+ * @param $posted_template_data mixed
+ * @param $option string indicating main wiaas category
+ */
+ public static function process_and_save_template_product_meta($post_id, $posted_template_data, $option) {
$processed_template_data = array();
// Sort posted data by menu order.
@@ -178,24 +171,24 @@ class Wiaas_template {
foreach ($posted_template_data as $data) {
- $product_id = isset($data['product_id']) ? absint($data['product_id']) : false;
- $product_title = isset($data['product_title']) ? $data['product_title'] : false;
+ $template_category_id = isset($data['template_category_id']) ? absint($data['template_category_id']) : false;
+ $template_category_title = isset($data['template_category_title']) ? $data['template_category_title'] : false;
$quantity = isset($data['quantity']) ? absint($data['quantity']) : false;
$item_data = array(
- 'template_category_id' => $product_id,
- 'template_category_title' => trim($product_title),
+ 'template_category_id' => $template_category_id,
+ 'template_category_title' => trim($template_category_title),
'quantity' => $quantity
);
- $processed_template_data[$product_id] = $item_data;
+ $processed_template_data[$template_category_id] = $item_data;
}
- update_post_meta($post_id, '_template_items_' . $option, $processed_template_data);
+ WC_Product_Template::save_template_product_meta($post_id, $option, $processed_template_data);
}
public static function menu_sort_order($a, $b) {
@@ -208,7 +201,7 @@ class Wiaas_template {
/**
- * Hide Attributes data panel.
+ * Hide default WC_Product data panels.
*/
function hide_attributes_data_panel($tabs) {
diff --git a/backend/app/plugins/wiaas/includes/admin/template/views/html-wiaas-template-product.php b/backend/app/plugins/wiaas/includes/admin/template/views/html-wiaas-template-product.php
index 0c0e03d..ea8bd95 100644
--- a/backend/app/plugins/wiaas/includes/admin/template/views/html-wiaas-template-product.php
+++ b/backend/app/plugins/wiaas/includes/admin/template/views/html-wiaas-template-product.php
@@ -18,8 +18,8 @@ if (!defined('ABSPATH')) {
?>
+ ?>
$item) {
+ $item_data = $item->get_data();
+ $post_terms = wp_get_object_terms($item->get_product_id(), 'template_category', array('fields' => 'id=>name'));
+
+ if (!empty($post_terms) && !is_wp_error($post_terms)) {
+
+ $cat = '';
+ $category_template_id = '';
+
+ foreach ($post_terms as $id => $term) {
+ $cat = $term;
+ $category_template_id = $id;
+ }
+
+ $template_category_object = new Wiaas_Template_Category_Object(
+ $category_template_id,
+ $cat,
+ $item_data['quantity_max']);
+ $template_category_objects[$category_template_id] = $template_category_object;
+
+ }
+ }
+
+ return $template_category_objects;
+ }
+
+ /**
+ * Save selected template to bundled product meta
+ *
+ * @param $selected_template integer
+ * @param $post_id integer
+ */
+
+ public static function bind_selected_template_to_product($selected_template, $post_id) {
+ if (!empty($selected_template))
+ update_post_meta($post_id, '_select_template', esc_attr($selected_template));
+ else {
+ update_post_meta($post_id, '_select_template', '');
+ }
+ }
+
+ /**
+ * Save template categories to template product meta
+ *
+ * @param $post_id integer
+ * @param $option string a main wiaas category
+ * @param $processed_template_data array actual template category data
+ */
+
+ public static function save_template_product_meta($post_id, $option, $processed_template_data) {
+
+ update_post_meta($post_id, '_template_items_' . $option, $processed_template_data);
+
+ }
}
}
diff --git a/backend/app/plugins/wiaas/tests/unit-tests/test-wiaas-templates.php b/backend/app/plugins/wiaas/tests/unit-tests/test-wiaas-templates.php
new file mode 100644
index 0000000..e3f008d
--- /dev/null
+++ b/backend/app/plugins/wiaas/tests/unit-tests/test-wiaas-templates.php
@@ -0,0 +1,61 @@
+template_category = wp_create_term('Test', 'template_category');
+ $this->template_meta = array(
+ 'template_category_id' => $this->template_category['term_id'],
+ 'template_category_title' => 'Test',
+ 'quantity' => 1
+ );
+
+ $this->template = $this->create_new_wiaas_template();
+ $this->product = $this->create_new_product();
+ $this->package = $this->create_new_package();
+ $this->add_products_to_package($this->package, $this->product);
+
+
+ }
+
+ public function test_template_category_taxonomy_created() {
+ $taxonomy = get_taxonomy('template_category');
+
+ $this->assertInstanceOf(WP_Taxonomy::class, $taxonomy);
+
+ $template_category_names = array_map(function ($term) {
+ return $term->name;
+ }, get_terms(array('taxonomy' => 'template_category', 'hide_empty' => false)));
+
+ $this->assertNotEmpty($template_category_names);
+ $this->assertContains('Test', $template_category_names);
+
+ }
+
+ function test_adding_template_category_to_template() {
+
+ WC_Product_Template::save_template_product_meta($this->template->get_id(), 'hardware', $this->template_meta);
+
+ $test_template_category = WC_Product_Template::get_template_categories_from_meta(
+ $this->template->get_id(), '_template_items_hardware');
+
+ $this->assertEquals($test_template_category['template_category_id'], $this->template_meta['template_category_id']);
+ $this->assertEquals($test_template_category['template_category_title'], $this->template_meta['template_category_title']);
+ $this->assertEquals($test_template_category['quantity'], $this->template_meta['quantity']);
+ }
+
+ function save_bind_package_to_template() {
+ WC_Product_Template::bind_selected_template_to_product($this->template->get_id(), $this->package->get_id());
+ $value = get_post_meta($this->package->get_id(), '_select_template', true);
+
+ $this->assertNotEmpty($value);
+ }
+}
\ No newline at end of file
diff --git a/backend/app/plugins/wiaas/tests/wiaas-unit-test-case.php b/backend/app/plugins/wiaas/tests/wiaas-unit-test-case.php
index 14a5b2f..d4c64b5 100644
--- a/backend/app/plugins/wiaas/tests/wiaas-unit-test-case.php
+++ b/backend/app/plugins/wiaas/tests/wiaas-unit-test-case.php
@@ -88,6 +88,21 @@ class Wiaas_Unit_Test_Case extends WP_UnitTestCase {
$package->sync(true);
}
+
+ function create_new_wiaas_template() {
+ $post_id = wp_insert_post(array(
+ 'post_type' => 'product',
+ 'post_status' => 'publish',
+ 'post_name' => 'product',
+ 'post_title' => 'Package',
+ 'post_content' => 'Package',
+ 'post_excerpt' => 'Package'
+ ), true);
+
+ return new WC_Product_Template($post_id);
+
+ }
+
function create_new_customer($login = 'customer_test', $organization_name = 'test-customer-organization') {
$customer_id = wp_insert_user(array(
'user_login' => $login,