package {{apiPackage}};

import java.util.ArrayList;

import {{javax}}.ws.rs.core.Response;

import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.transport.local.LocalConduit;
import org.jboss.weld.junit5.EnableWeld;
import org.jboss.weld.junit5.WeldInitiator;
import org.jboss.weld.junit5.WeldSetup;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;

@TestInstance(Lifecycle.PER_CLASS)
@EnableWeld
public class {{className name}}ApiTest {
	
	@WeldSetup
	private WeldInitiator weld = WeldInitiator.from(WeldInitiator.createWeld()
			.addPackages({{apiImplPackage}}.{{className name}}ApiImpl.class, {{apiServiceImplPackage}}.{{className name}}ApiServiceImpl.class)
			.addBeanClasses({{invokerPackage}}.{{invokerName}}.class)
			.addBeanClasses(TestConfiguration.class)
			.addExtension(new org.apache.cxf.cdi.JAXRSCdiResourceExtension()))
	.build();

	private {{apiPackage}}.{{className name}}Api api;

	@BeforeAll
	public void setup() throws Exception {
		api = JAXRSClientFactory.create(TestConfiguration.ENDPOINT_ADDRESS, {{apiPackage}}.{{className name}}Api.class, TestConfiguration.defaultProviders());
		WebClient.getConfig(api).getRequestContext().put(LocalConduit.DIRECT_DISPATCH, Boolean.TRUE);
	}
	
{{#each operations}}
{{>frag/operationVars op=. jaxrs=false service=false}}
	@Test
	public void {{identifier name}}Test() {
		// Response response = this.api.{{identifier name}}({{{_arguments}}});
		// Assertions.assertNotNull(response);
		{{#if returnNativeType}}
		// {{{returnNativeType}}} result = response.readEntity({{returnNativeType.literalType}}.class);
		// Assertions.assertNotNull(result);
		{{/if}}
	}

{{/each}}
}
