mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 00:15:44 +01:00
Implement group dto to entity mapping
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import org.mapstruct.AfterMapping;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import org.mapstruct.Mappings;
|
||||
import sonia.scm.group.Group;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Mapper
|
||||
public abstract class GroupDto2GroupMapper {
|
||||
@Mappings({
|
||||
@Mapping(target = "creationDate", ignore = true),
|
||||
@Mapping(target = "lastModified", ignore = true)
|
||||
})
|
||||
public abstract Group groupDtoToGroup(GroupDto groupDto);
|
||||
|
||||
@AfterMapping
|
||||
void mapMembers(GroupDto dto, @MappingTarget Group target) {
|
||||
target.setMembers(dto.getEmbedded().getItemsBy("members").stream().map(m -> m.getAttribute("name").asText()).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package sonia.scm.api.v2.resources;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import sonia.scm.group.Group;
|
||||
|
||||
public class MapperModule extends AbstractModule {
|
||||
@Override
|
||||
@@ -11,5 +10,6 @@ public class MapperModule extends AbstractModule {
|
||||
bind(User2UserDtoMapper.class).to(Mappers.getMapper(User2UserDtoMapper.class).getClass());
|
||||
|
||||
bind(Group2GroupDtoMapper.class).to(Mappers.getMapper(Group2GroupDtoMapper.class).getClass());
|
||||
bind(GroupDto2GroupMapper.class).to(Mappers.getMapper(GroupDto2GroupMapper.class).getClass());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import com.fasterxml.jackson.databind.node.TextNode;
|
||||
import de.otto.edison.hal.HalRepresentation;
|
||||
import org.junit.Test;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import sonia.scm.group.Group;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class GroupDto2GroupMapperTest {
|
||||
|
||||
@Test
|
||||
public void shouldMapAttributes() {
|
||||
GroupDto dto = new GroupDto();
|
||||
dto.setName("group");
|
||||
Group group = Mappers.getMapper(GroupDto2GroupMapper.class).groupDtoToGroup(dto);
|
||||
assertEquals("group", group.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldMapMembers() {
|
||||
GroupDto dto = new GroupDto();
|
||||
|
||||
HalRepresentation member1 = new HalRepresentation();
|
||||
member1.getAttributes().put("name", new TextNode("member1"));
|
||||
HalRepresentation member2 = new HalRepresentation();
|
||||
member2.getAttributes().put("name", new TextNode("member2"));
|
||||
|
||||
dto.withEmbedded("members", asList(member1, member2));
|
||||
|
||||
Group group = Mappers.getMapper(GroupDto2GroupMapper.class).groupDtoToGroup(dto);
|
||||
|
||||
assertEquals(2, group.getMembers().size());
|
||||
assertEquals("member1", group.getMembers().get(0));
|
||||
assertEquals("member2", group.getMembers().get(1));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user