package com.constellio.model.services.users; import static org.assertj.core.api.Assertions.assertThat; import java.util.Arrays; import org.jdom2.Document; import org.junit.Before; import org.junit.Test; import com.constellio.model.entities.security.global.GlobalGroup; import com.constellio.model.entities.security.global.GlobalGroupStatus; import com.constellio.model.entities.security.global.XmlGlobalGroup; import com.constellio.sdk.tests.ConstellioTest; public class GlobalGroupsWriterTest extends ConstellioTest { public static final String PARENT = "parent"; public static final String STATUS = "status"; public static final String CODE = "code"; public static final String NAME = "name"; public static final String USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS = "usersAutomaticallyAddedToCollections"; GlobalGroupsWriter writer; Document document; GlobalGroup globalGroup1; GlobalGroup globalGroup1_1; GlobalGroup globalGroup1_1_1; GlobalGroup globalGroup2; @Before public void setup() throws Exception { document = new Document(); writer = new GlobalGroupsWriter(document); writer.createEmptyGlobalGroups(); globalGroup1 = new XmlGlobalGroup("group1", null, GlobalGroupStatus.ACTIVE, true); globalGroup1_1 = new XmlGlobalGroup("group1_1", "group1", GlobalGroupStatus.ACTIVE, true); globalGroup1_1_1 = new XmlGlobalGroup("group1_1_1", "group1_1", GlobalGroupStatus.ACTIVE, true); globalGroup2 = new XmlGlobalGroup("group2", null, GlobalGroupStatus.ACTIVE, true); } @Test public void whenCreateEmptyGloblalGroupsThenItIsCreated() throws Exception { assertThat(document.getRootElement().getChildren()).isEmpty(); } @Test public void whenAddGlobalGroupsThenTheyAreAdded() throws Exception { writer.addUpdate(globalGroup1); writer.addUpdate(globalGroup1_1); writer.addUpdate(globalGroup1_1_1); writer.addUpdate(globalGroup2); assertThat(document.getRootElement().getChildren()).hasSize(4); assertThat(document.getRootElement().getChildren().get(0).getAttributeValue(CODE)).isEqualTo(globalGroup1.getCode()); assertThat(document.getRootElement().getChildren().get(0).getChild(NAME).getText()).isEqualTo(globalGroup1.getName()); assertThat(document.getRootElement().getChildren().get(0).getChild(PARENT).getText()).isEqualTo(""); assertThat(document.getRootElement().getChildren().get(0).getChild(STATUS).getText()) .isEqualTo(GlobalGroupStatus.ACTIVE.name()); assertThat( document.getRootElement().getChildren().get(0).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .isEmpty(); assertThat(document.getRootElement().getChildren().get(1).getAttributeValue(CODE)).isEqualTo(globalGroup1_1.getCode()); assertThat(document.getRootElement().getChildren().get(1).getChild(NAME).getText()).isEqualTo(globalGroup1_1.getName()); assertThat(document.getRootElement().getChildren().get(1).getChild(PARENT).getText()).isEqualTo(globalGroup1.getCode()); assertThat(document.getRootElement().getChildren().get(1).getChild(STATUS).getText()) .isEqualTo(GlobalGroupStatus.ACTIVE.name()); assertThat( document.getRootElement().getChildren().get(1).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .isEmpty(); assertThat(document.getRootElement().getChildren().get(2).getAttributeValue(CODE)) .isEqualTo(globalGroup1_1_1.getCode()); assertThat(document.getRootElement().getChildren().get(2).getChild(NAME).getText()) .isEqualTo(globalGroup1_1_1.getName()); assertThat(document.getRootElement().getChildren().get(2).getChild(PARENT).getText()) .isEqualTo(globalGroup1_1.getCode()); assertThat(document.getRootElement().getChildren().get(0).getChild(STATUS).getText()).isEqualTo( GlobalGroupStatus.ACTIVE.name()); assertThat( document.getRootElement().getChildren().get(2).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .isEmpty(); assertThat(document.getRootElement().getChildren().get(3).getAttributeValue(CODE)).isEqualTo(globalGroup2.getCode()); assertThat(document.getRootElement().getChildren().get(3).getChild(NAME).getText()).isEqualTo(globalGroup2.getName()); assertThat(document.getRootElement().getChildren().get(3).getChild(PARENT).getText()).isEqualTo(""); assertThat(document.getRootElement().getChildren().get(3).getChild(STATUS).getText()) .isEqualTo(GlobalGroupStatus.ACTIVE.name()); assertThat( document.getRootElement().getChildren().get(3).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .isEmpty(); } @Test public void givenGlobalGroupWhenUpdateItThenItIsUpdated() throws Exception { writer.addUpdate(globalGroup1); writer.addUpdate(globalGroup2); globalGroup1 = new XmlGlobalGroup("group1", "name1", Arrays.asList("user1"), null, GlobalGroupStatus.INACTIVE, true); writer.addUpdate(globalGroup1); assertThat(document.getRootElement().getChildren()).hasSize(2); assertThat(document.getRootElement().getChildren().get(0).getAttributeValue(CODE)).isEqualTo(globalGroup2.getCode()); assertThat(document.getRootElement().getChildren().get(0).getChild(NAME).getText()).isEqualTo("group2"); assertThat(document.getRootElement().getChildren().get(0).getChild(PARENT).getText()).isEmpty(); assertThat(document.getRootElement().getChildren().get(0).getChild(STATUS).getText()) .isEqualTo(GlobalGroupStatus.ACTIVE.name()); assertThat( document.getRootElement().getChildren().get(0).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .isEmpty(); assertThat(document.getRootElement().getChildren().get(1).getAttributeValue(CODE)).isEqualTo(globalGroup1.getCode()); assertThat(document.getRootElement().getChildren().get(1).getChild(NAME).getText()).isEqualTo("name1"); assertThat(document.getRootElement().getChildren().get(1).getChild(PARENT).getText()).isEmpty(); assertThat(document.getRootElement().getChildren().get(1).getChild(STATUS).getText()) .isEqualTo(GlobalGroupStatus.INACTIVE.name()); assertThat( document.getRootElement().getChildren().get(1).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .hasSize(1); } @Test public void givenGlobalGroupWhenRemoveItThenItIsRemoved() throws Exception { writer.addUpdate(globalGroup1); writer.addUpdate(globalGroup2); writer.logicallyRemove(globalGroup1); assertThat(document.getRootElement().getChildren()).hasSize(2); assertThat(document.getRootElement().getChildren().get(0).getAttributeValue(CODE)).isEqualTo(globalGroup2.getCode()); assertThat(document.getRootElement().getChildren().get(0).getChild(NAME).getText()).isEqualTo("group2"); assertThat(document.getRootElement().getChildren().get(0).getChild(PARENT).getText()).isEmpty(); assertThat(document.getRootElement().getChildren().get(0).getChild(STATUS).getText()) .isEqualTo(GlobalGroupStatus.ACTIVE.name()); assertThat( document.getRootElement().getChildren().get(0).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .isEmpty(); assertThat(document.getRootElement().getChildren().get(1).getAttributeValue(CODE)).isEqualTo(globalGroup1.getCode()); assertThat(document.getRootElement().getChildren().get(1).getChild(NAME).getText()).isEqualTo("group1"); assertThat(document.getRootElement().getChildren().get(1).getChild(PARENT).getText()).isEmpty(); assertThat(document.getRootElement().getChildren().get(1).getChild(STATUS).getText()) .isEqualTo(GlobalGroupStatus.INACTIVE.name()); assertThat( document.getRootElement().getChildren().get(1).getChild(USERS_AUTOMATICALLY_ADDED_TO_COLLECTIONS).getChildren()) .isEmpty(); } }