package eu.dnetlib.enabling.manager;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.junit.Before;
import org.junit.Test;

import eu.dnetlib.data.information.similarity.DNetSimilarityResult;
import eu.dnetlib.data.information.similarity.ISimilarityService;
import eu.dnetlib.data.information.similarity.ISimilarityServiceBackend;
import eu.dnetlib.data.information.similarity.SimilarityServiceException;


public class SimilarityManualTest {

	String backendServiceLocation = "http://146.48.85.149:8680/icm-data-information-similarity-latest/services/similarityServiceBackend";
	String frontendServiceLocation = "http://146.48.85.149:8680/icm-data-information-similarity-latest/services/similarityService";
	ISimilarityServiceBackend backend;
	ISimilarityService frontend;
	
	@Before
	public void init() {
		JaxWsProxyFactoryBean backendFactory = new JaxWsProxyFactoryBean();
		backendFactory.setServiceClass(ISimilarityServiceBackend.class);
		backendFactory.setAddress(backendServiceLocation);
		backend = (ISimilarityServiceBackend) backendFactory.create();
		
		JaxWsProxyFactoryBean frontendFactory = new JaxWsProxyFactoryBean();
		frontendFactory.setServiceClass(ISimilarityService.class);
		frontendFactory.setAddress(frontendServiceLocation);
		frontend = (ISimilarityService) frontendFactory.create();
	}
	
//	@Test
	public void testBackendDelete() {
		try {
			backend.delete("someId");
			fail("exception expected");
		} catch (SimilarityServiceException e) {
			System.out.println(e.getMessage());
//			ok
		}
	}
	
//	@Test
	public void testBackendCreate() throws Exception {
		String format ="DMF";
		String layout = "index";
		String interpretationName = "driver";
		backend.create(format, layout, interpretationName);
	}
	
//	@Test
	public void testBackendFeed() throws Exception {
		String ixId = "someId";
		String resultSetEPRBase64Enc = "invalidResultSetEPRBase64Enc";
		backend.feed(ixId, resultSetEPRBase64Enc);
	}
	
	@Test
	public void testFrontend() throws Exception {
//		known ids:
//		3a0d8d3c-8a23-433f-849d-dcaf547536b5_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=::oai:etheses.nottingham.ac.uk:652
//		3a0d8d3c-8a23-433f-849d-dcaf547536b5_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=::oai:etheses.nottingham.ac.uk:653
		String id = "115-b80a8e4f-8ec2-492e-86e6-614dac98486c_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=::oai:doc.utwente.nl:57777";
		DNetSimilarityResult[] results = frontend.findSimilarDirectly(id, false);
		assertNotNull(results);
		System.out.println("result lenght: " + results.length);
		for (DNetSimilarityResult current : results) {
			System.out.println("id :" + current.getId() + " score: " + current.getScore());
		}
	}
}
