package com.customer.work.model;

import com.flowable.action.engine.test.ActionExtension;
import com.flowable.app.engine.test.FlowableAppExtension;
import com.flowable.dataobject.engine.test.DataObjectExtension;
import com.flowable.form.spring.impl.test.FlowableFormSpringExtension;
import com.flowable.idm.engine.test.PlatformIdmExtension;
import com.flowable.platform.tenant.test.TenantSetupExtension;
import com.flowable.policy.engine.test.PolicyExtension;
import com.flowable.serviceregistry.engine.test.ServiceRegistryExtension;
import com.flowable.template.engine.test.TemplateExtension;
import org.flowable.cmmn.spring.impl.test.FlowableCmmnSpringExtension;
import org.flowable.dmn.spring.impl.test.FlowableDmnSpringExtension;
import org.flowable.spring.impl.test.FlowableSpringExtension;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.transaction.annotation.Transactional;

import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited

@ExtendWith(SpringExtension.class)
@ExtendWith(ActionExtension.class)
@ExtendWith(DataObjectExtension.class)
//@ExtendWith(EngageExtension.class)
@ExtendWith(FlowableAppExtension.class)
@ExtendWith(FlowableSpringExtension.class)
@ExtendWith(FlowableCmmnSpringExtension.class)
@ExtendWith(FlowableFormSpringExtension.class)
@ExtendWith(FlowableDmnSpringExtension.class)
@ExtendWith(PlatformIdmExtension.class)
@ExtendWith(PolicyExtension.class)
@ExtendWith(ServiceRegistryExtension.class)
@ExtendWith(TemplateExtension.class)
@ExtendWith(TenantSetupExtension.class)
@ExtendWith(TestMailServerExtension.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@Transactional
@SpringBootTest
public @interface FlowableModelTest {
    /*
    @AliasFor(annotation = SpringBootTest.class, attribute = "webEnvironment")
    SpringBootTest.WebEnvironment webEnvironment() default SpringBootTest.WebEnvironment.MOCK;

     */
}
