package eu.dnetlib.data.mapreduce.util;

import eu.dnetlib.data.proto.DedupProtos.Dedup.RelName;
import eu.dnetlib.data.proto.OafProtos.OafRel;
import eu.dnetlib.data.proto.RelTypeProtos.RelType;
import eu.dnetlib.data.proto.RelTypeProtos.SubRelType;
import org.junit.Before;
import org.junit.Test;

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

public class OafRelDecoderTest {

	private OafRel oafRel;

	@Before
	public void setUp() {
		oafRel = OafTest.getDedupRel("ID_1", "ID_2", RelType.resultResult, "isMergedIn");
	}

	@Test
	public void testSetClass() {

		OafRelDecoder d1 = OafRelDecoder.decode(oafRel);

		assertNotNull(d1);
		assertEquals("isMergedIn", d1.getRelClass());

		OafRelDecoder d2 = OafRelDecoder.decode(d1.setClassId("isMergedIn").build());

		assertEquals("isMergedIn", d2.getRelClass());
		assertEquals("isMergedIn", d2.getRelMetadata().getSemantics().getClassid());
		assertEquals("isMergedIn", d2.getRelMetadata().getSemantics().getClassname());

	}

	@Test
	public void testGetCF() {
		assertEquals("resultResult_dedup_isMergedIn", OafRelDecoder.getCFQ(RelType.resultResult, SubRelType.dedup, RelName.isMergedIn));
		assertEquals("resultResult_dedup_isMergedIn", OafRelDecoder.getCFQ(RelType.resultResult, SubRelType.dedup, "isMergedIn"));
	}

}
