Package com.alibaba.sample.petstore.biz

Source Code of com.alibaba.sample.petstore.biz.StoreManagerTests

/*
* Copyright (c) 2002-2012 Alibaba Group Holding Limited.
* All rights reserved.
*
* 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.
*/

package com.alibaba.sample.petstore.biz;

import static com.alibaba.citrus.test.TestEnvStatic.*;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

import com.alibaba.citrus.util.io.StreamUtil;
import com.alibaba.sample.petstore.dal.dao.ProductDao;
import com.alibaba.sample.petstore.dal.dataobject.Cart;
import com.alibaba.sample.petstore.dal.dataobject.CartItem;
import com.alibaba.sample.petstore.dal.dataobject.Category;
import com.alibaba.sample.petstore.dal.dataobject.Product;
import com.alibaba.sample.petstore.dal.dataobject.ProductItem;
import org.apache.commons.fileupload.FileItem;
import org.easymock.IAnswer;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

public class StoreManagerTests extends AbstractBizManagerTests {
    @Autowired
    private StoreManager storeManager;

    @Autowired
    private ProductDao productDao;

    @Test
    public void getAllCategories() {
        List<Category> cats = storeManager.getAllCategories();

        assertEquals(5, cats.size());

        List<Product> prods = null;

        for (Category cat : cats) {
            if ("CATS".equals(cat.getCategoryId())) {
                assertEquals("Cats", cat.getName());
                prods = cat.getProductList();
                assertNotNull(prods);
                break;
            }
        }

        assertEquals(2, prods.size());
    }

    @Test
    public void getAllProductItems() {
        List<ProductItem> items = storeManager.getAllProductItems("FL-DSH-01");

        assertEquals(2, items.size());
    }

    @Test
    public void getProductItem() {
        assertNull(storeManager.getProductItem("nonexist"));

        ProductItem item = storeManager.getProductItem("EST-1");
        assertEquals("EST-1", item.getProductItemId());

        Product prod = item.getProduct();
        assertEquals("FI-SW-01", prod.getProductId());
        assertEquals("Angelfish", prod.getName());

        Category cat = prod.getCategory();
        assertEquals("FISH", cat.getCategoryId());
    }

    @Test
    public void getCartItems() {
        Cart cart = new Cart();

        cart.setQuantity("EST-1", 10);
        cart.setQuantity("EST-2", 100);

        storeManager.getCartItems(cart);

        assertProductItem(cart, 0, "EST-1", 10);
        assertProductItem(cart, 1, "EST-2", 100);

        assertEquals(165 + 1650, cart.getTotal().intValue());
    }

    private void assertProductItem(Cart cart, int index, String itemId, int quantity) {
        CartItem item = cart.getCartItemList().get(index);

        assertSame(item, cart.getCartItem(itemId));
        assertEquals(itemId, item.getProductItemId());
        assertEquals(itemId, item.getProductItem().getProductItemId());
        assertEquals(quantity, item.getQuantity());
        assertEquals(item.getProductItem().getListPrice().doubleValue() * quantity, item.getTotal().doubleValue(),
                     0.01d);
    }

    @Test
    public void getCategory() {
        Category cat = storeManager.getCategory("BIRDS");

        assertEquals("BIRDS", cat.getCategoryId());
        assertEquals("Birds", cat.getName());
        assertEquals("Birds", cat.getDescription());
        assertEquals("cat_bird.jpg", cat.getLogo());
    }

    @Test(expected = DuplicatedProductException.class)
    public void addProduct_duplicated() {
        Product prod = new Product();

        prod.setProductId("FI-SW-01");

        storeManager.addProduct(prod, "FISH", null);
    }

    @Test
    public void addProduct() throws Exception {
        Product prod = new Product();
        final File srcfile = new File(srcdir, "resources.xml");

        prod.setProductId("myfish");
        prod.setDescription("My fish");
        prod.setName("my fish");

        FileItem fi = createMock(FileItem.class);
        expect(fi.getName()).andReturn("c:\\test\\pic.gif");
        expect(fi.getInputStream()).andAnswer(new IAnswer<InputStream>() {
            public InputStream answer() throws Throwable {
                return new FileInputStream(srcfile);
            }
        });
        replay(fi);

        storeManager.addProduct(prod, "FISH", fi);

        prod = productDao.getProductById("myfish");
        assertEquals("myfish", prod.getProductId());
        assertEquals("my fish", prod.getName());
        assertEquals("My fish", prod.getDescription());
        assertEquals("FISH", prod.getCategoryId());
        assertTrue(prod.getLogo().startsWith("image_"));
        assertTrue(prod.getLogo().endsWith(".gif"));

        File f = new File(destdir, "upload/" + prod.getLogo());
        assertTrue(f.exists());

        assertEquals(StreamUtil.readText(new FileInputStream(srcfile), "8859_1", true),
                     StreamUtil.readText(new FileInputStream(f), "8859_1", true));
    }
}
TOP

Related Classes of com.alibaba.sample.petstore.biz.StoreManagerTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.