// Path: pact/provider/api/src/main/java/org/arquillian/algeron/pact/provider/api/Pacts.java
// public class Pacts {
// 
//     private List<Pact> pacts;
// 
//     public Pacts(List<Pact> pacts) {
//         this.pacts = new ArrayList<>(pacts);
//     }
// 
//     public List<Pact> getPacts() {
//         return pacts;
//     }
// }
// 
// Path: pact/provider/spi/src/main/java/org/arquillian/algeron/pact/provider/spi/Target.java
// public interface Target {
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      * <p>
//      * Important: Implementators must implements {@link PactProviderExecutionAwareTarget}
//      * <p>
//      * URL configuration is retrieved from PactProviderConfiguration
//      */
//     void testInteraction();
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      * <p>
//      * Important: Implementators must implements {@link PactProviderExecutionAwareTarget}
//      *
//      * @param url
//      *     where provider is deployed
//      */
//     void testInteraction(URL url);
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      *
//      * @param url
//      *     where provider is deployed
//      * @param consumer
//      *     consumer name that generated the interaction
//      * @param interaction
//      *     interaction to be tested
//      */
//     void testInteraction(URL url, String consumer, RequestResponseInteraction interaction);
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      *
//      * @param consumer
//      *     consumer name that generated the interaction
//      * @param interaction
//      *     interaction to be tested
//      */
//     void testInteraction(String consumer, RequestResponseInteraction interaction);
// }


import au.com.dius.pact.model.Consumer;
import au.com.dius.pact.model.Pact;
import au.com.dius.pact.model.ProviderState;
import au.com.dius.pact.model.RequestResponseInteraction;
import java.util.ArrayList;
import java.util.List;
import org.arquillian.algeron.pact.provider.api.Pacts;
import org.arquillian.algeron.pact.provider.spi.CurrentConsumer;
import org.arquillian.algeron.pact.provider.spi.CurrentInteraction;
import org.arquillian.algeron.pact.provider.spi.Provider;
import org.arquillian.algeron.pact.provider.spi.State;
import org.arquillian.algeron.pact.provider.spi.Target;
import org.arquillian.algeron.provider.core.retriever.ContractsFolder;
import org.jboss.arquillian.core.api.Instance;
import org.jboss.arquillian.core.spi.EventContext;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.arquillian.test.spi.TestClass;
import org.jboss.arquillian.test.spi.event.suite.BeforeClass;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
package org.arquillian.algeron.pact.provider.core;



@RunWith(MockitoJUnitRunner.class)
public class InteractionRunnerTest {

    @Mock
    private EventContext<org.jboss.arquillian.test.spi.event.suite.Test> eventContext;

    @Mock
    private org.jboss.arquillian.test.spi.event.suite.Test test;

    @Mock
    private Target target;

    @Mock
    private RequestResponseInteraction requestResponseInteraction;

    @Mock
    private Instance algeronConfiguration;

    private Instance<Pacts> pactsInstance;

    @Before
    public void setup() {
        final PactsRetriever pactsRetriever = new PactsRetriever();
        pactsRetriever.algeronProviderConfigurationInstance = algeronConfiguration;
        final List<Pact> pacts = pactsRetriever.getPacts(new BeforeClass(PactProvider.class));
// Path: pact/provider/api/src/main/java/org/arquillian/algeron/pact/provider/api/Pacts.java
// public class Pacts {
// 
//     private List<Pact> pacts;
// 
//     public Pacts(List<Pact> pacts) {
//         this.pacts = new ArrayList<>(pacts);
//     }
// 
//     public List<Pact> getPacts() {
//         return pacts;
//     }
// }
// 
// Path: pact/provider/spi/src/main/java/org/arquillian/algeron/pact/provider/spi/Target.java
// public interface Target {
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      * <p>
//      * Important: Implementators must implements {@link PactProviderExecutionAwareTarget}
//      * <p>
//      * URL configuration is retrieved from PactProviderConfiguration
//      */
//     void testInteraction();
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      * <p>
//      * Important: Implementators must implements {@link PactProviderExecutionAwareTarget}
//      *
//      * @param url
//      *     where provider is deployed
//      */
//     void testInteraction(URL url);
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      *
//      * @param url
//      *     where provider is deployed
//      * @param consumer
//      *     consumer name that generated the interaction
//      * @param interaction
//      *     interaction to be tested
//      */
//     void testInteraction(URL url, String consumer, RequestResponseInteraction interaction);
// 
//     /**
//      * Run {@link au.com.dius.pact.model.RequestResponseInteraction} and perform response verification
//      * <p>
//      * Any exception will be caught by caller and reported as test failure
//      *
//      * @param consumer
//      *     consumer name that generated the interaction
//      * @param interaction
//      *     interaction to be tested
//      */
//     void testInteraction(String consumer, RequestResponseInteraction interaction);
// }


// Path: pact/provider/core/src/test/java/org/arquillian/algeron/pact/provider/core/InteractionRunnerTest.java
import au.com.dius.pact.model.Consumer;
import au.com.dius.pact.model.Pact;
import au.com.dius.pact.model.ProviderState;
import au.com.dius.pact.model.RequestResponseInteraction;
import java.util.ArrayList;
import java.util.List;
import org.arquillian.algeron.pact.provider.api.Pacts;
import org.arquillian.algeron.pact.provider.spi.CurrentConsumer;
import org.arquillian.algeron.pact.provider.spi.CurrentInteraction;
import org.arquillian.algeron.pact.provider.spi.Provider;
import org.arquillian.algeron.pact.provider.spi.State;
import org.arquillian.algeron.pact.provider.spi.Target;
import org.arquillian.algeron.provider.core.retriever.ContractsFolder;
import org.jboss.arquillian.core.api.Instance;
import org.jboss.arquillian.core.spi.EventContext;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.arquillian.test.spi.TestClass;
import org.jboss.arquillian.test.spi.event.suite.BeforeClass;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

package org.arquillian.algeron.pact.provider.core;



@RunWith(MockitoJUnitRunner.class)
public class InteractionRunnerTest {

    @Mock
    private EventContext<org.jboss.arquillian.test.spi.event.suite.Test> eventContext;

    @Mock
    private org.jboss.arquillian.test.spi.event.suite.Test test;

    @Mock
    private Target target;

    @Mock
    private RequestResponseInteraction requestResponseInteraction;

    @Mock
    private Instance algeronConfiguration;

    private Instance<Pacts> pactsInstance;

    @Before
    public void setup() {
        final PactsRetriever pactsRetriever = new PactsRetriever();
        pactsRetriever.algeronProviderConfigurationInstance = algeronConfiguration;
        final List<Pact> pacts = pactsRetriever.getPacts(new BeforeClass(PactProvider.class));
        pactsInstance = () -> new Pacts(pacts);