package eu.dnetlib.enabling.aas.nh;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import eu.dnetlib.enabling.aas.nh.NotificationUtils;

/**
 * @author mhorst
 *
 */
public class NotificationUtilsTest {

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}
	
	@Test
	public void testExtractResourceType() {
		String securityContextDSResourceType = "SecurityContextDSResourceType"; 
		String profileContent = "<RESOURCE_PROFILE><HEADER><RESOURCE_TYPE value=\""+securityContextDSResourceType+"\"/><RESOURCE_URI value=\"\"/></HEADER></RESOURCE_PROFILE>";
		String resourceType = NotificationUtils.extractResourceType(profileContent);
		assertNotNull(resourceType);
		assertTrue(securityContextDSResourceType.equals(resourceType));
	}
	
	@Test
	public void testExtractProfId() {
		String profId = "1234567890"; 
		String profileContent = "<RESOURCE_PROFILE><HEADER><RESOURCE_IDENTIFIER value=\""+profId+"\"/><RESOURCE_URI value=\"\"/></HEADER></RESOURCE_PROFILE>";
		String foundProfId = NotificationUtils.extractProfId(profileContent);
		assertNotNull(foundProfId);
		assertTrue(profId.equals(foundProfId));
	}

	@Test
	public void testIsNewISSNVersion() {
		String issnVersion = null;
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-1";
		assertFalse(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-1.0.1";
		assertFalse(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-1.0.9";
		assertFalse(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-1.1.0";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-1.1.9";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-2";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "UNDEFINED-xxx-2.0.0";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
		issnVersion = "IS_SN-1.0.0-1.1.0";
		assertTrue(NotificationUtils.isNewISSNVersion(issnVersion));
	}
}
