/*
* Copyright 2013 the original author or authors.
*
* 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 org.springframework.batch.core.jsr;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.Properties;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
public class JsrJobContextTests {
private JsrJobContext context;
@Mock
private JobExecution execution;
@Mock
private JobInstance instance;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
Properties properties = new Properties();
properties.put("jobLevelProperty1", "jobLevelValue1");
context = new JsrJobContext();
context.setProperties(properties);
context.setJobExecution(execution);
when(execution.getJobInstance()).thenReturn(instance);
}
@Test(expected=IllegalArgumentException.class)
public void testCreateWithNull() {
context = new JsrJobContext();
context.setJobExecution(null);
}
@Test
public void testGetJobName() {
when(instance.getJobName()).thenReturn("jobName");
assertEquals("jobName", context.getJobName());
}
@Test
public void testTransientUserData() {
context.setTransientUserData("This is my data");
assertEquals("This is my data", context.getTransientUserData());
}
@Test
public void testGetInstanceId() {
when(instance.getId()).thenReturn(5L);
assertEquals(5L, context.getInstanceId());
}
@Test
public void testGetExecutionId() {
when(execution.getId()).thenReturn(5L);
assertEquals(5L, context.getExecutionId());
}
@Test
public void testJobParameters() {
JobParameters params = new JobParametersBuilder()
.addString("key1", "value1")
.toJobParameters();
when(execution.getJobParameters()).thenReturn(params);
assertEquals("value1", execution.getJobParameters().getString("key1"));
}
@Test
public void testJobProperties() {
assertEquals("jobLevelValue1", context.getProperties().get("jobLevelProperty1"));
}
@Test
public void testGetBatchStatus() {
when(execution.getStatus()).thenReturn(BatchStatus.COMPLETED);
assertEquals(javax.batch.runtime.BatchStatus.COMPLETED, context.getBatchStatus());
}
@Test
public void testExitStatus() {
context.setExitStatus("my exit status");
verify(execution).setExitStatus(new ExitStatus("my exit status"));
when(execution.getExitStatus()).thenReturn(new ExitStatus("exit"));
assertEquals("exit", context.getExitStatus());
}
@Test
public void testInitialNullExitStatus() {
when(execution.getExitStatus()).thenReturn(new ExitStatus("exit"));
assertEquals(null, context.getExitStatus());
}
}