package org.jabref.logic.importer.util;
import java.util.Collections;
import java.util.Optional;
import org.jabref.logic.importer.ParserResult;
import org.jabref.model.entry.BibEntry;
import org.jabref.model.groups.AllEntriesGroup;
import org.jabref.model.groups.ExplicitGroup;
import org.jabref.model.groups.GroupHierarchyType;
import org.jabref.model.groups.GroupTreeNode;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ConvertLegacyExplicitGroupsTest {
private PostOpenAction action;
private BibEntry entry;
private ExplicitGroup group;
@Before
public void setUp() throws Exception {
action = new ConvertLegacyExplicitGroups();
entry = new BibEntry();
entry.setCiteKey("Entry1");
group = new ExplicitGroup("TestGroup", GroupHierarchyType.INCLUDING, ',');
group.addLegacyEntryKey("Entry1");
}
@Test
public void performActionWritesGroupMembershipInEntry() throws Exception {
ParserResult parserResult = generateParserResult(GroupTreeNode.fromGroup(group));
action.performAction(parserResult);
assertEquals(Optional.of("TestGroup"), entry.getField("groups"));
}
@Test
public void performActionClearsLegacyKeys() throws Exception {
ParserResult parserResult = generateParserResult(GroupTreeNode.fromGroup(group));
action.performAction(parserResult);
assertEquals(Collections.emptyList(), group.getLegacyEntryKeys());
}
@Test
public void performActionWritesGroupMembershipInEntryForComplexGroupTree() throws Exception {
GroupTreeNode root = GroupTreeNode.fromGroup(new AllEntriesGroup(""));
root.addSubgroup(new ExplicitGroup("TestGroup2", GroupHierarchyType.INCLUDING, ','));
root.addSubgroup(group);
ParserResult parserResult = generateParserResult(root);
action.performAction(parserResult);
assertEquals(Optional.of("TestGroup"), entry.getField("groups"));
}
private ParserResult generateParserResult(GroupTreeNode groupRoot) {
ParserResult parserResult = new ParserResult(Collections.singletonList(entry));
parserResult.getMetaData().setGroups(groupRoot);
return parserResult;
}
}