/*
 * Copyright 2012 International Business Machines Corp.
 *
 * See the NOTICE file distributed with this work for additional information
 * regarding copyright ownership. 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.apache.openejb.batchee;

import jakarta.batch.operations.JobOperator;
import jakarta.batch.runtime.BatchRuntime;
import jakarta.inject.Inject;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.testing.Module;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.apache.batchee.util.Batches.waitForEnd;

@RunWith(ApplicationComposer.class)
public class InjectionsTest {

    @Module
    public Class<?>[] cdi() {
        return new Class<?>[]{BatchBean.class, InjectionsMock.class};
    }

    @Inject
    private BatchBean bean;

    @Test
    public void test() {
        Assert.assertEquals("true", bean.run());
    }

    public static class BatchBean {

        public String run() {
            final JobOperator operator = BatchRuntime.getJobOperator();
            final long id = operator.start("injections", null);
            waitForEnd(operator, id);
            return operator.getStepExecutions(id).iterator().next().getExitStatus();
        }

    }
}
