/*
* #%L
* BroadleafCommerce Integration
* %%
* Copyright (C) 2009 - 2013 Broadleaf Commerce
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package org.broadleafcommerce.core.catalog.service;
import org.broadleafcommerce.common.media.domain.Media;
import org.broadleafcommerce.common.media.domain.MediaImpl;
import org.broadleafcommerce.common.money.Money;
import org.broadleafcommerce.core.catalog.domain.Category;
import org.broadleafcommerce.core.catalog.domain.CategoryImpl;
import org.broadleafcommerce.core.catalog.domain.CategoryMediaXrefImpl;
import org.broadleafcommerce.core.catalog.domain.CategoryProductXref;
import org.broadleafcommerce.core.catalog.domain.CategoryProductXrefImpl;
import org.broadleafcommerce.core.catalog.domain.CategoryXref;
import org.broadleafcommerce.core.catalog.domain.CategoryXrefImpl;
import org.broadleafcommerce.core.catalog.domain.Product;
import org.broadleafcommerce.core.catalog.domain.ProductImpl;
import org.broadleafcommerce.core.catalog.domain.Sku;
import org.broadleafcommerce.core.catalog.domain.SkuImpl;
import org.broadleafcommerce.test.BaseTest;
import org.springframework.transaction.annotation.Transactional;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.annotation.Resource;
@SuppressWarnings("deprecation")
public class CatalogTest extends BaseTest {
@Resource
private CatalogService catalogService;
@Test(groups = {"testCatalog"})
@Transactional
public void testCatalog() throws Exception {
Category category = new CategoryImpl();
category.setName("Soaps");
category = catalogService.saveCategory(category);
Category category2 = new CategoryImpl();
category2.setName("Towels");
category2 = catalogService.saveCategory(category2);
Category category3 = new CategoryImpl();
category3.setName("SuperCategory");
category3 = catalogService.saveCategory(category3);
CategoryXref temp = new CategoryXrefImpl();
temp.setCategory(category);
temp.setSubCategory(category3);
category3.getAllParentCategoryXrefs().add(temp);
category3 = catalogService.saveCategory(category3);
// Test category hierarchy
Long cat3Id = category3.getId();
category3 = null;
category3 = catalogService.findCategoryById(cat3Id);
category3.getAllParentCategoryXrefs().clear();
CategoryXref temp2 = new CategoryXrefImpl();
temp2.setCategory(category);
temp2.setSubCategory(category3);
category3.getAllParentCategoryXrefs().add(temp2);
CategoryXref temp3 = new CategoryXrefImpl();
temp3.setCategory(category2);
temp3.setSubCategory(category3);
category3.getAllParentCategoryXrefs().add(temp3);
category3 = catalogService.saveCategory(category3);
assert category3.getAllParentCategoryXrefs().size() == 2;
Product newProduct = new ProductImpl();
Sku newDefaultSku = new SkuImpl();
newDefaultSku = catalogService.saveSku(newDefaultSku);
newProduct.setDefaultSku(newDefaultSku);
newProduct.setName("Lavender Soap");
Calendar activeStartCal = Calendar.getInstance();
activeStartCal.add(Calendar.DAY_OF_YEAR, -2);
newProduct.setActiveStartDate(activeStartCal.getTime());
// newProduct.setAllParentCategories(allParentCategories);
newProduct.setDefaultCategory(category);
newProduct.getAllParentCategoryXrefs().clear();
newProduct = catalogService.saveProduct(newProduct);
CategoryProductXref categoryXref = new CategoryProductXrefImpl();
categoryXref.setProduct(newProduct);
categoryXref.setCategory(category);
newProduct.getAllParentCategoryXrefs().add(categoryXref);
CategoryProductXref categoryXref2 = new CategoryProductXrefImpl();
categoryXref2.setProduct(newProduct);
categoryXref2.setCategory(category2);
newProduct.getAllParentCategoryXrefs().add(categoryXref2);
newProduct = catalogService.saveProduct(newProduct);
Long newProductId = newProduct.getId();
Product testProduct = catalogService.findProductById(newProductId);
assert testProduct.getId().equals(testProduct.getId());
Category testCategory = catalogService.findCategoryByName("Soaps");
assert testCategory.getId().equals(category.getId());
testCategory = catalogService.findCategoryById(category.getId());
assert testCategory.getId().equals(category.getId());
Media media = new MediaImpl();
media.setAltText("test");
media.setTitle("large");
media.setUrl("http://myUrl");
category.getCategoryMediaXref().put("large", new CategoryMediaXrefImpl(category, media, "large"));
catalogService.saveCategory(testCategory);
testCategory = catalogService.findCategoryById(category.getId());
assert(testCategory.getCategoryMediaXref().get("large") != null);
List<Category> categories = catalogService.findAllCategories();
assert categories != null && categories.size() == 3;
List<Product> products = catalogService.findAllProducts();
boolean foundProduct = false;
for (Product product : products ) {
if (product.getId().equals(newProductId)) {
foundProduct = true;
}
}
assert foundProduct == true;
products = catalogService.findProductsByName(newProduct.getName());
foundProduct = false;
for (Product product : products ) {
if (product.getId().equals(newProductId)) {
foundProduct = true;
}
}
assert foundProduct == true;
Sku newSku = new SkuImpl();
newSku.setName("Under Armor T-Shirt -- Red");
newSku.setRetailPrice(new Money(14.99));
newSku.setActiveStartDate(activeStartCal.getTime());
newSku = catalogService.saveSku(newSku);
List<Sku> allSkus = new ArrayList<Sku>();
allSkus.add(newSku);
newProduct.setAdditionalSkus(allSkus);
newProduct = catalogService.saveProduct(newProduct);
Long skuId = newProduct.getSkus().get(0).getId();
Sku testSku = catalogService.findSkuById(skuId);
assert testSku.getId().equals(skuId);
List<Sku> testSkus = catalogService.findAllSkus();
boolean foundSku = false;
for (Sku sku : testSkus) {
if (sku.getId().equals(skuId)) {
foundSku = true;
}
}
assert foundSku == true;
List<Long> skuIds = new ArrayList<Long>();
skuIds.add(skuId);
testSkus = catalogService.findSkusByIds(skuIds);
foundSku = false;
for (Sku sku : testSkus) {
if (sku.getId().equals(skuId)) {
foundSku = true;
}
}
assert foundSku == true;
}
@Test
public void testSkus() throws Exception {
Sku sku = new SkuImpl();
String longDescription = "This is a great product that will help the Longhorns win.";
String description = "This is a great product.";
sku.setLongDescription(longDescription);
assert sku.getLongDescription().equals(longDescription);
sku.setDescription(description);
assert sku.getDescription().equals(description);
assert sku.isTaxable() == null;
sku.setTaxable(null);
assert sku.isTaxable() == null;
sku.setTaxable(true);
assert sku.isTaxable() == true;
sku.setTaxable(false);
assert sku.isTaxable() == false;
sku.setDiscountable(null);
assert sku.isDiscountable() == false;
sku.setDiscountable(true);
assert sku.isDiscountable() == true;
sku.setDiscountable(false);
assert sku.isDiscountable() == false;
assert sku.isAvailable() == true;
sku.setAvailable(null);
assert sku.isAvailable() == true;
sku.setAvailable(true);
assert sku.isAvailable() == true;
sku.setAvailable(false);
assert sku.isAvailable() == false;
assert sku.getName() == null;
}
}