blob: 72488701fc3d6ca9db862394480a260269f39e46 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.oodt.cas.filemgr.cli.action;
//JUnit imports
import java.net.MalformedURLException;
import java.net.URL;
//OODT imports
import org.apache.oodt.cas.cli.action.CmdLineAction.ActionMessagePrinter;
import org.apache.oodt.cas.cli.exception.CmdLineActionException;
import org.apache.oodt.cas.filemgr.structs.Product;
import org.apache.oodt.cas.filemgr.structs.ProductPage;
import org.apache.oodt.cas.filemgr.structs.ProductType;
import org.apache.oodt.cas.filemgr.structs.exceptions.ConnectionException;
import org.apache.oodt.cas.filemgr.system.XmlRpcFileManagerClient;
//Google imports
import com.google.common.collect.Lists;
//JUnit imports
import junit.framework.TestCase;
/**
* Test class for {@link GetPrevPageCliAction}.
*
* @author bfoster (Brian Foster)
*/
public class TestGetPrevPageCliAction extends TestCase {
private static final int PAGE_NUM = 2;
private static final int TOTAL_PAGES = 2;
private static final int PAGE_SIZE = 3;
private static final String PRODUCT_ID_1 = "TestProductId1";
private static final String PRODUCT_NAME_1 = "TestProductName1";
private static final String PRODUCT_ID_2 = "TestProductId2";
private static final String PRODUCT_NAME_2 = "TestProductName2";
private static final String PRODUCT_ID_3 = "TestProductId3";
private static final String PRODUCT_NAME_3 = "TestProductName3";
private static final String PRODUCT_ID_4 = "TestProductId4";
private static final String PRODUCT_NAME_4 = "TestProductName4";
private static final String PRODUCT_STRUCTURE = "Flat";
private static final String PRODUCT_STATUS = "DONE";
private static final String PRODUCT_TYPE_NAME = "TestProductType";
public void testValidateErrors() {
ActionMessagePrinter printer = new ActionMessagePrinter();
GetPrevPageCliAction cliAction = new NullPTGetPrevPageCliAction();
cliAction.setProductTypeName(PRODUCT_TYPE_NAME);
cliAction.setCurrentPageNum(1);
try {
cliAction.execute(printer);
fail("Expected throw CmdLineActionException");
} catch (CmdLineActionException ignore) {
}
cliAction = new NullPPGetPrevPageCliAction();
cliAction.setProductTypeName(PRODUCT_TYPE_NAME);
cliAction.setCurrentPageNum(1);
try {
cliAction.execute(printer);
fail("Expected throw CmdLineActionException");
} catch (CmdLineActionException ignore) {
}
cliAction = new NullNPGetPrevPageCliAction();
cliAction.setProductTypeName(PRODUCT_TYPE_NAME);
cliAction.setCurrentPageNum(1);
try {
cliAction.execute(printer);
fail("Expected throw CmdLineActionException");
} catch (CmdLineActionException ignore) {
}
}
public void testDataFlow() throws CmdLineActionException {
ActionMessagePrinter printer = new ActionMessagePrinter();
MockGetPrevPageCliAction cliAction = new MockGetPrevPageCliAction();
cliAction.setProductTypeName(PRODUCT_TYPE_NAME);
cliAction.setCurrentPageNum(PAGE_NUM);
cliAction.execute(printer);
assertEquals(6, printer.getPrintedMessages().size());
assertEquals("Page: [num=" + (PAGE_NUM - 1) + ", totalPages=" + TOTAL_PAGES
+ ", pageSize=" + PAGE_SIZE + "]", printer.getPrintedMessages()
.get(0));
assertEquals("\n", printer.getPrintedMessages().get(1));
assertEquals("Products:", printer.getPrintedMessages().get(2));
assertEquals("\n", printer.getPrintedMessages().get(3));
assertEquals("Product: [id=" + PRODUCT_ID_4 + ",name=" + PRODUCT_NAME_4
+ ",type=" + PRODUCT_TYPE_NAME + ",structure=" + PRODUCT_STRUCTURE
+ ", transferStatus=" + PRODUCT_STATUS + "]", printer
.getPrintedMessages().get(4));
assertEquals("\n", printer.getPrintedMessages().get(5));
}
public class MockGetPrevPageCliAction extends GetPrevPageCliAction {
@Override
public XmlRpcFileManagerClient getClient() throws MalformedURLException,
ConnectionException {
return new MockXmlRpcFileManagerClient();
}
}
public class NullPTGetPrevPageCliAction extends MockGetPrevPageCliAction {
@Override
public XmlRpcFileManagerClient getClient() throws MalformedURLException,
ConnectionException {
return new MockXmlRpcFileManagerClient() {
@Override
public ProductType getProductTypeByName(String name) {
return null;
}
};
}
}
public class NullPPGetPrevPageCliAction extends MockGetPrevPageCliAction {
@Override
public XmlRpcFileManagerClient getClient() throws MalformedURLException,
ConnectionException {
return new MockXmlRpcFileManagerClient() {
@Override
public ProductPage getFirstPage(ProductType pt) {
return null;
}
};
}
}
public class NullNPGetPrevPageCliAction extends MockGetPrevPageCliAction {
@Override
public XmlRpcFileManagerClient getClient() throws MalformedURLException,
ConnectionException {
return new MockXmlRpcFileManagerClient() {
@Override
public ProductPage getPrevPage(ProductType pt,
ProductPage currentPage) {
return null;
}
};
}
}
public static class MockXmlRpcFileManagerClient extends XmlRpcFileManagerClient {
public MockXmlRpcFileManagerClient() throws MalformedURLException,
ConnectionException {
super(new URL("http://localhost:9000"), false);
}
@Override
public ProductType getProductTypeByName(String name) {
ProductType pt = new ProductType();
pt.setName(name);
return pt;
}
@Override
public ProductPage getFirstPage(ProductType pt) {
ProductPage pp = new ProductPage();
pp.setPageNum(PAGE_NUM);
pp.setTotalPages(TOTAL_PAGES);
pp.setPageSize(PAGE_SIZE);
Product p1 = new Product();
p1.setProductId(PRODUCT_ID_1);
p1.setProductName(PRODUCT_NAME_1);
p1.setProductType(pt);
p1.setProductStructure(PRODUCT_STRUCTURE);
p1.setTransferStatus(PRODUCT_STATUS);
Product p2 = new Product();
p2.setProductId(PRODUCT_ID_2);
p2.setProductName(PRODUCT_NAME_2);
p2.setProductType(pt);
p2.setProductStructure(PRODUCT_STRUCTURE);
p2.setTransferStatus(PRODUCT_STATUS);
Product p3 = new Product();
p3.setProductId(PRODUCT_ID_3);
p3.setProductName(PRODUCT_NAME_3);
p3.setProductType(pt);
p3.setProductStructure(PRODUCT_STRUCTURE);
p3.setTransferStatus(PRODUCT_STATUS);
pp.setPageProducts(Lists.newArrayList(p1, p2, p3));
return pp;
}
@Override
public ProductPage getPrevPage(ProductType pt, ProductPage currentPage) {
ProductPage pp = new ProductPage();
pp.setPageNum(currentPage.getPageNum() - 1);
pp.setTotalPages(currentPage.getTotalPages());
pp.setPageSize(currentPage.getPageSize());
Product p4 = new Product();
p4.setProductId(PRODUCT_ID_4);
p4.setProductName(PRODUCT_NAME_4);
p4.setProductType(pt);
p4.setProductStructure(PRODUCT_STRUCTURE);
p4.setTransferStatus(PRODUCT_STATUS);
pp.setPageProducts(Lists.newArrayList(p4));
return pp;
}
};
}