package eu.dnetlib.api.client;

import static org.junit.Assert.assertNotNull;

import java.net.URI;
import java.net.URISyntaxException;

import org.apache.http.client.utils.URIBuilder;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.junit.Test;

import eu.dnetlib.api.utils.OpenAireDocumentPage;

public class OpenaireProjectsApiClientTest extends OpenaireApiClientTest {

	@Test
	public void testProjectsOpenaire() throws URISyntaxException, DocumentException {
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(projectsPath);
		String results = getApiClient().doRequest(EntityType.project, ApiModel.none, builder.build());
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
		assertNotNull(page);
	}

	@Test
	public void testProjectParameters() throws URISyntaxException, DocumentException {
		for (String param : commonParameters) {
			if (!param.equals("model") && !param.equals("format") && !param.equals("page") && !param.equals("size") && !param.equals("sortBy")) {
				URIBuilder builder = new URIBuilder(requestBaseURL).setPath(projectsPath).addParameter(param, "test");
				URI uri = builder.build();
				System.out.println(uri);
				String results = getApiClient().doRequest(EntityType.project, ApiModel.none, uri);
				checkNotException(results);
			}
		}
		for (String param : projectParameters) {
			if (!param.equals("startYear") && !param.equals("endYear")) {
				URIBuilder builder = new URIBuilder(requestBaseURL).setPath(projectsPath).addParameter(param, "test");
				URI uri = builder.build();
				System.out.println(uri);
				String results = getApiClient().doRequest(EntityType.project, ApiModel.none, uri);
				checkNotException(results);
			}
		}
	}

	@Test
	public void testSortByProjectsParameters() throws URISyntaxException, DocumentException {
		checkSortByParamaters(EntityType.project);
	}
}
