/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.publication.task.impl;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import com.ewcms.content.resource.model.Resource;
import com.ewcms.core.site.model.Site;
import com.ewcms.publication.service.ResourcePublishServiceable;
import com.ewcms.publication.task.TaskException;
import com.ewcms.publication.task.Taskable;
import com.ewcms.publication.task.impl.process.ResourceProcess;
import com.ewcms.publication.task.impl.process.TaskProcessable;
/**
* ResourceTask单元测试
*
* @author wangwei
*/
public class ResourceTaskTest {
@Test
public void testBuildTask(){
ResourcePublishServiceable service = mock(ResourcePublishServiceable.class);
Site site = new Site();
site.setId(Integer.MAX_VALUE);
site.setSiteName("主站");
Taskable task = new ResourceTask.Builder(service, site).
setAgain(true).
setPublishIds(new int[]{}).
setUsername("test").
build();
Assert.assertEquals("主站资源发布", task.getDescription());
Assert.assertEquals("test", task.getUsername());
}
private Resource newResource(Integer id,boolean thumb,Resource.Status status){
Resource resource = new Resource();
resource.setId(1);
if(thumb){
resource.setThumbPath("/root/test.jpg");
resource.setThumbUri("/resource/test.jpg");
}
resource.setPath("/root/test.txt");
resource.setUri("/resource/test.txt");
resource.setStatus(status);
return resource;
}
@Test
public void testGetTaskProcessesBySiteId()throws TaskException{
Integer siteId = Integer.MAX_VALUE;
ResourcePublishServiceable service = mock(ResourcePublishServiceable.class);
Site site = new Site();
site.setId(siteId);
site.setSiteName("主站");
List<Resource> resources = new ArrayList<Resource>();
resources.add(newResource(0,false,Resource.Status.NORMAL));
resources.add(newResource(1,true,Resource.Status.NORMAL));
when(service.findPublishResources(siteId, false)).thenReturn(resources);
Taskable task =new ResourceTask.Builder(service, site).build();
List<TaskProcessable> processes =task.toTaskProcess();
Assert.assertEquals(2, processes.size());
ResourceProcess process = (ResourceProcess)processes.get(0);
Assert.assertEquals(1, process.getPaths().length);
Assert.assertEquals("/root/test.txt", process.getPaths()[0]);
Assert.assertEquals(1, process.getUris().length);
Assert.assertEquals("/resource/test.txt", process.getUris()[0]);
process = (ResourceProcess)processes.get(1);
Assert.assertEquals(2, process.getPaths().length);
Assert.assertEquals("/root/test.jpg", process.getPaths()[0]);
Assert.assertEquals("/root/test.txt", process.getPaths()[1]);
Assert.assertEquals(2, process.getUris().length);
Assert.assertEquals("/resource/test.jpg", process.getUris()[0]);
Assert.assertEquals("/resource/test.txt", process.getUris()[1]);
}
@Test
public void testTaskProcessByResourceIds()throws TaskException{
Integer siteId = Integer.MAX_VALUE;
ResourcePublishServiceable service = mock(ResourcePublishServiceable.class);
int[] resourceIds = new int[]{0,1,2,3};
Site site = new Site();
site.setId(siteId);
site.setSiteName("主站");
when(service.getResource(0)).thenReturn(newResource(0,true,Resource.Status.NORMAL));
when(service.getResource(1)).thenReturn(newResource(1,false,Resource.Status.INIT));
when(service.getResource(2)).thenReturn(newResource(2,false,Resource.Status.DELETE));
when(service.getResource(3)).thenReturn(newResource(3,false,Resource.Status.RELEASED));
Taskable task = new ResourceTask.Builder(service, site).setPublishIds(resourceIds).build();
List<TaskProcessable> processes =task.toTaskProcess();
Assert.assertEquals(2, processes.size());
ResourceProcess process = (ResourceProcess)processes.get(0);
Assert.assertEquals(2, process.getPaths().length);
}
}