/**
* Licensed to The Apereo Foundation under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
*
* The Apereo Foundation licenses this file to you under the Educational
* Community 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://opensource.org/licenses/ecl2.txt
*
* 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.opencastproject.index.service.resources.list.provider;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.opencastproject.index.service.exception.ListProviderException;
import org.opencastproject.index.service.resources.list.api.ResourceListQuery;
import org.opencastproject.index.service.resources.list.query.JobsListQuery;
import org.opencastproject.job.api.Job;
import org.opencastproject.workflow.api.WorkflowDatabaseException;
import org.opencastproject.workflow.api.WorkflowDefinition;
import org.opencastproject.workflow.api.WorkflowDefinitionImpl;
import org.opencastproject.workflow.api.WorkflowService;
import org.apache.commons.lang3.StringUtils;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
public class JobsListProviderTest {
private JobsListProvider jobsListProvider;
private WorkflowService workflowService;
private List<WorkflowDefinition> workflowDefinitions;
@Before
public void setUp() throws Exception {
jobsListProvider = new JobsListProvider();
workflowDefinitions = new ArrayList<WorkflowDefinition>();
WorkflowDefinition wfD = new WorkflowDefinitionImpl();
wfD.setTitle("Full");
wfD.setId("full");
workflowDefinitions.add(wfD);
wfD = new WorkflowDefinitionImpl();
wfD.setTitle("Quick");
wfD.setId("quick");
workflowDefinitions.add(wfD);
workflowService = EasyMock.createNiceMock(WorkflowService.class);
EasyMock.expect(workflowService.listAvailableWorkflowDefinitions())
.andReturn(workflowDefinitions).anyTimes();
jobsListProvider.setWorkflowService(workflowService);
jobsListProvider.activate(null);
EasyMock.replay(workflowService);
}
@Test
public void testStatusListName() throws ListProviderException, WorkflowDatabaseException {
ResourceListQuery query = new JobsListQuery();
assertEquals(4, jobsListProvider.getList(JobsListProvider.LIST_STATUS, query, null).size());
for (Entry<String, String> entry : jobsListProvider.getList(JobsListProvider.LIST_STATUS, query, null).entrySet()) {
try {
Job.Status.valueOf(entry.getKey());
} catch (IllegalArgumentException ex) {
fail("Can not parse job state");
}
assertTrue(StringUtils.startsWith(entry.getValue(), JobsListProvider.JOB_STATUS_FILTER_PREFIX));
}
}
@Test
public void testWorkflowListName() throws ListProviderException, WorkflowDatabaseException {
ResourceListQuery query = new JobsListQuery();
assertEquals(workflowDefinitions.size(),
jobsListProvider.getList(JobsListProvider.LIST_WORKFLOW, query, null).size());
for (Entry<String, String> entry : jobsListProvider.getList(
JobsListProvider.LIST_WORKFLOW, query, null).entrySet()) {
boolean match = false;
for (WorkflowDefinition wfD : workflowDefinitions) {
if (StringUtils.equals(wfD.getId(), entry.getKey())
&& StringUtils.equals(wfD.getTitle(), entry.getValue())) {
match = true;
break;
}
}
assertTrue(match);
}
}
}