meals-made-easy-api/src/integrationTest/java/app/mealsmadeeasy/api/job/JobServiceIntegrationTests.java

76 lines
2.1 KiB
Java

package app.mealsmadeeasy.api.job;
import app.mealsmadeeasy.api.IntegrationTestsExtension;
import app.mealsmadeeasy.api.recipe.job.RecipeInferJobHandler;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import java.util.concurrent.TimeUnit;
import static org.awaitility.Awaitility.await;
@SpringBootTest
@ExtendWith(IntegrationTestsExtension.class)
public class JobServiceIntegrationTests {
@Component
private static final class TestJobHandler implements JobHandler<Object> {
@Override
public Class<Object> getPayloadType() {
return Object.class;
}
@Override
public String getJobKey() {
return "TEST_JOB_TYPE";
}
@Override
public void handle(Job job, Object payload) {
// no-op
}
}
@TestConfiguration
public static class JobServiceIntegrationTestsConfiguration {
@Bean
public JobHandler<Object> testJobHandler() {
return new TestJobHandler();
}
}
// If not mockito, it will try to load a ChatClient
@MockitoBean
private RecipeInferJobHandler recipeInferJobHandler;
@Autowired
private JobService jobService;
@Autowired
private JobRepository jobRepository;
@Test
public void smokeScreen() {
final Job job = this.jobService.create("TEST_JOB_TYPE", null);
await().atMost(1, TimeUnit.SECONDS).until(() -> {
final Job foundJob = this.jobRepository.findById(job.getId()).orElse(null);
if (foundJob == null) {
return false;
} else {
return foundJob.getState().equals(Job.State.DONE);
}
});
}
}